14

I've been trying to build a fairly simple message box in tkinter that has "YES" and "NO" buttons. When I push the "YES" button internally it must go and write YES to a file. Similarly, when "NO" is pushed, NO must be written to a file. How can I do this?

1
  • 4
    Sounds like a good homework question to me... So, what do you have so far? Commented Jun 27, 2009 at 8:54

4 Answers 4

22

You can use the module tkMessageBox for Python 2.7 or the corresponding version for Python 3 called tkinter.messagebox.

It looks like askquestion() is exactly the function that you want. It will even return the string "yes" or "no" for you.

Sign up to request clarification or add additional context in comments.

2 Comments

The tkinter.messagebox does not work in my ubuntu 12.04 python
@Ajoy Check which version of Python you have, you might need to do tkMessageBox if it's 2.x.
13

Here's how you can ask a question using a message box in Python 2.7. You need specifically the module tkMessageBox.

from Tkinter import *
import tkMessageBox


root = Tk().withdraw()  # hiding the main window
var = tkMessageBox.askyesno("Title", "Your question goes here?")

filename = "log.txt"

f = open(filename, "w")
f.write(str(var))
print str(var) + " has been written to the file " + filename
f.close()

1 Comment

Link to the othe types of message boxes infohost.nmt.edu/tcc/help/pubs/tkinter/web/tkMessageBox.html
8

You can assign the return value of the askquestion function to a variable, and then you simply write the variable to a file:

from tkinter import messagebox

variable = messagebox.askquestion('title','question')

with open('myfile.extension', 'w') as file: # option 'a' to append
    file.write(variable + '\n')

Comments

1

You can use message box from Tkinter using

# For python 3 or above
from tkinter import messagebox

# For python less than 3
from Tkinter import *
import tkMessageBox

Here's the basic syntax:

messagebox.Function_Name(title, message [, options])

The message boxes are modal and will return a subset of (True, False, OK, None, Yes, No) based on the user’s selection.

So to get the value of message box you just need to store the value in a variable. An example is given below:

res=mb.askquestion('Exit Application', 'Do you really want to exit')
if res == 'yes' :
    root.destroy()

There are different type of message boxes or Function_name:

  1. showinfo(): Show some relevant information to the user.
  2. showwarning(): Display the warning to the user.
  3. showerror(): Display the error message to the user.
  4. askquestion(): Ask question and user has to answered in yes or no.
  5. askokcancel(): Confirm the user’s action regarding some application activity.
  6. askyesno(): User can answer in yes or no for some action.
  7. askretrycancel(): Ask the user about doing a particular task again or not.
  8. Message: creates a default information box, or is same as showinfo box.
messagebox.Message(master=None, **options)
# Create a default information message box.

You can even pass your own title and message in it.

Things you can pass in the message boz:

  • title: This parameter is a string which is shown as a title of a message box.
  • message: This parameter is the string to be displayed as a message on the message box.
  • options: There are two options that can be used are:
    1. default: This option is used to specify the default button like ABORT, RETRY, or IGNORE in the message box.
    2. parent: This option is used to specify the window on top of which the message box is to be displayed.

Links i have used for this answer:

2 Comments

You mentioned that it is possible to modify the button text but no source you provided shows that. How is it possible? I want to adjust message boxes to the system languages but can't find a solution.
rectified the mistake, it isnt possilbe to modify the text in the button of messagebox :(. the only solution i see is to create your own message box widget which isnt too hard.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.