[英]Using Tkinter in Python 2.6 how do I make a button widget print out selected Checkbuttons in a text box?
我對編程非常陌生,遇到一個問題,我必須打印出客戶想要的面包類型以及他們選擇的調味品。 我不知道如何在文本框中打印出選中/選中的項目。 到目前為止,這就是我所擁有的。
from Tkinter import *
class Application(Frame):
def __init__ (self, master):
Frame.__init__(self, master)
self.grid()
self.create_widget()
def create_widget(self):
self.lbl = Label(self, text="Place your order").grid(row=0,column=2,columnspan=4)
self.lbl2 = Label(self, text="Customer Name:").grid(row=1,column=0,columnspan=4,sticky=W)
self.lbl3 = Label(self, text="Select your bun:").grid(row=2, column =0, columnspan=3, sticky=W)
self.lbl4 = Label(self, text="Condiments:").grid(row=3, column =0, columnspan=3, sticky=W)
self.bun = StringVar()
self.bun.set(None)
self.radio_bttn = Radiobutton(self, text = "White", variable = self.bun, value=1).grid(row=2, column = 1, columnspan=4)
self.radio_bttn2 = Radiobutton(self, text = "Wheat", variable = self.bun, value=2).grid(row=2, column= 2, columnspan=4)
self.work = Text(self,width=50,height=5).grid(row=12, column = 0, columnspan = 6)
self.work1 = Text(self,width=40,height=1).grid(row=1,column=3, columnspan=4)
self.cheese = BooleanVar()
Checkbutton(self, text="Cheese", variable=self.cheese, onvalue="yes", offvalue="no").grid(row=4, column=0, sticky = W)
self.lettuce = BooleanVar()
Checkbutton(self, text="Lettuce", variable=self.lettuce, onvalue="yes", offvalue="no").grid(row=5, column=0, sticky = W)
self.onion = BooleanVar()
Checkbutton(self, text="Onion", variable=self.onion, onvalue="yes", offvalue="no").grid(row=6, column=0, sticky = W)
self.tomato = BooleanVar()
Checkbutton(self, text="Tomato", variable=self.tomato, onvalue="yes", offvalue="no").grid(row=7, column=0, sticky = W)
self.pickles = BooleanVar()
Checkbutton(self, text="Pickles", variable=self.pickles, onvalue="yes", offvalue="no").grid(row=8, column=0, sticky = W)
self.mustard = BooleanVar()
Checkbutton(self, text="Mustard", variable=self.mustard, onvalue="yes", offvalue="no").grid(row=9, column=0, sticky = W)
self.mayo = BooleanVar()
Checkbutton(self, text="Mayo", variable=self.mayo, onvalue="yes", offvalue="no").grid(row=10, column=0, sticky = W)
self.ketchup = BooleanVar()
Checkbutton(self, text="Ketchup", variable=self.ketchup, onvalue="yes", offvalue="no").grid(row=11, column=0, sticky = W)
self.bttn_bttn = Button(self, text="Order", command = callback).grid(row =13, column = 0, sticky = W)
def callback(self):
toppings = "Here are your toppings.\n"
if self.cheese.get():
toppings += "Cheese\n"
if self.lettuce.get():
toppings += "Lettuce\n"
if self.onion.get():
toppings += "Onion\n"
if self.tomato.get():
toppings += "Tomato\n"
if self.pickles.get():
toppings += "Pickles\n"
if self.mustard.get():
toppings += "Mustard\n"
if self.mayo.get():
toppings += "Mayo\n"
if self.ketchup.get():
toppings += "Ketchup\n"
self.work.insert(0.0, toppings)
#main
root= Tk()
root.title("Burger")
root.geometry("400x500")
app = Application(root)
root.mainloop(
任何Tkinter小部件的.grid
方法始終返回None
。
考慮到這一點,您需要在此處.grid
調用放在自己的行上:
self.work = Text(self,width=50,height=5)
self.work.grid(row=12, column = 0, columnspan = 6)
self.work1 = Text(self,width=40,height=1)
self.work1.grid(row=1,column=3, columnspan=4)
以下是腳本的工作副本。 我所做的更改位於注釋框中:
from Tkinter import *
class Application(Frame):
def __init__ (self, master):
Frame.__init__(self, master)
self.grid()
self.create_widget()
def create_widget(self):
self.lbl = Label(self, text="Place your order").grid(row=0,column=2,columnspan=4)
self.lbl2 = Label(self, text="Customer Name:").grid(row=1,column=0,columnspan=4,sticky=W)
self.lbl3 = Label(self, text="Select your bun:").grid(row=2, column =0, columnspan=3, sticky=W)
self.lbl4 = Label(self, text="Condiments:").grid(row=3, column =0, columnspan=3, sticky=W)
self.bun = StringVar()
self.bun.set(None)
self.radio_bttn = Radiobutton(self, text = "White", variable = self.bun, value=1).grid(row=2, column = 1, columnspan=4)
self.radio_bttn2 = Radiobutton(self, text = "Wheat", variable = self.bun, value=2).grid(row=2, column= 2, columnspan=4)
##################################################
self.work = Text(self,width=50,height=5)
self.work.grid(row=12, column = 0, columnspan = 6)
self.work1 = Text(self,width=40,height=1)
self.work1.grid(row=1,column=3, columnspan=4)
##################################################
self.cheese = BooleanVar()
Checkbutton(self, text="Cheese", variable=self.cheese, onvalue="yes", offvalue="no").grid(row=4, column=0, sticky = W)
self.lettuce = BooleanVar()
Checkbutton(self, text="Lettuce", variable=self.lettuce, onvalue="yes", offvalue="no").grid(row=5, column=0, sticky = W)
self.onion = BooleanVar()
Checkbutton(self, text="Onion", variable=self.onion, onvalue="yes", offvalue="no").grid(row=6, column=0, sticky = W)
self.tomato = BooleanVar()
Checkbutton(self, text="Tomato", variable=self.tomato, onvalue="yes", offvalue="no").grid(row=7, column=0, sticky = W)
self.pickles = BooleanVar()
Checkbutton(self, text="Pickles", variable=self.pickles, onvalue="yes", offvalue="no").grid(row=8, column=0, sticky = W)
self.mustard = BooleanVar()
Checkbutton(self, text="Mustard", variable=self.mustard, onvalue="yes", offvalue="no").grid(row=9, column=0, sticky = W)
self.mayo = BooleanVar()
Checkbutton(self, text="Mayo", variable=self.mayo, onvalue="yes", offvalue="no").grid(row=10, column=0, sticky = W)
self.ketchup = BooleanVar()
Checkbutton(self, text="Ketchup", variable=self.ketchup, onvalue="yes", offvalue="no").grid(row=11, column=0, sticky = W)
#####################################################
# Just a quick fix here:
# You need to set 'command' to 'self.callback', not 'callback'
self.bttn_bttn = Button(self, text="Order", command = self.callback).grid(row =13, column = 0, sticky = W)
#####################################################
def callback(self):
toppings = "Here are your toppings.\n"
if self.cheese.get():
toppings += "Cheese\n"
if self.lettuce.get():
toppings += "Lettuce\n"
if self.onion.get():
toppings += "Onion\n"
if self.tomato.get():
toppings += "Tomato\n"
if self.pickles.get():
toppings += "Pickles\n"
if self.mustard.get():
toppings += "Mustard\n"
if self.mayo.get():
toppings += "Mayo\n"
if self.ketchup.get():
toppings += "Ketchup\n"
self.work.insert(0.0, toppings)
#main
root= Tk()
root.title("Burger")
root.geometry("400x500")
app = Application(root)
root.mainloop()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.