我尝试用按钮获取当前组合框的值,并显示消息。但是,我做了一些错误的事情,以正确地获得所选的值。
AttributeError: 'SelectDB' object has no attribute 'cmb'我是怎么得到组合框值的?
import sqlite3
from tkinter import *
from tkinter import ttk
from tkinter import messagebox
class SelectDB:
def __init__(self, wind) :
self.wind = wind
self.wind.title ('MyApp')
ttk.Label(self.wind, text="Select you're Database:").grid (row = 0, column = 0)
ttk.Combobox(self.wind, width="10", values=("Local (sqllite)","MYSQL")).grid (row = 0, column = 1)
ttk.Button(text="Start", command=self.checkcmbo).grid (row = 1, column = 0)
def checkcmbo(self):
if self.cmb.get() == "Local (sqllite)":
messagebox.showinfo("What user choose", "you choose Local (sqllite)")
elif self.cmb.get(self) == "MYSQL":
messagebox.showinfo("What user choose", "you choose MYSQL")
else:
messagebox.showinfo("What user choose", "NOTHING")
if __name__ == '__main__':
wind = Tk()
application = SelectDB(wind)
wind.mainloop()发布于 2019-04-25 08:07:52
网格、pack和place函数、条目对象的和所有其他小部件的都不返回。在python中,当您执行().b()时,表达式的结果是任何b()返回,因此条目(.).grid(.)都不会回来的。
你应该把它分成两行
self.cmb = ttk.Combobox(self.wind, width="10", values=("Local (sqllite)","MYSQL")) self.cmb.grid (row = 0, column = 1)
class SelectDB:
def __init__(self, wind) :
self.wind = wind
self.wind.title ('MyApp')
ttk.Label(self.wind, text="Select you're Database:").grid (row = 0, column = 0)
self.cmb = ttk.Combobox(self.wind, width="10", values=("Local (sqllite)","MYSQL"))
self.cmb.grid (row = 0, column = 1)
btn = ttk.Button(text="Start", command=self.checkcmbo).grid (row = 1, column = 0)
def checkcmbo(self):
if self.cmb.get() == "Local (sqllite)":
messagebox.showinfo("What user choose", "you choose Local (sqllite)")
elif self.cmb.get() == "MYSQL":
messagebox.showinfo("What user choose", "you choose MYSQL")
else:
messagebox.showinfo("What user choose", "NOTHING")
if __name__ == '__main__':
wind = Tk()
application = SelectDB(wind)
wind.mainloop()发布于 2019-04-25 08:07:12
试试吧,我做了些改变
import sqlite3
from tkinter import *
from tkinter import ttk
from tkinter import messagebox
class SelectDB:
def __init__(self, wind) :
self.wind = wind
self.wind.title ('MyApp')
ttk.Label(self.wind, text="Select you're Database:").grid (row = 0, column = 0)
self.cbCombo = ttk.Combobox(self.wind, width="10", values=("Local (sqllite)","MYSQL"))
self.cbCombo.grid (row = 0, column = 1)
ttk.Button(text="Start", command=self.checkcmbo).grid (row = 1, column = 0)
def checkcmbo(self):
if self.cbCombo.current()!=-1:
if self.cbCombo.current() ==0:
msg="You choos sqlite"
else:
msg="You choos MYSQL"
messagebox.showwarning('MyApp',msg,)
else:
messagebox.showwarning('MyApp','You must choose something!',)
if __name__ == '__main__':
wind = Tk()
application = SelectDB(wind)
wind.mainloop()https://stackoverflow.com/questions/55843424
复制相似问题