python - Python,问题获取带有按钮的组合框的值
问题描述
我尝试使用按钮获取当前组合框的值并显示消息。但是我做错了什么来正确地选择选择的值。
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()
解决方案
Entry 对象和所有其他小部件的grid、pack 和 place 函数返回 None。在 python 中,当您执行 a().b() 时,表达式的结果是 b() 返回的任何内容,因此 Entry(...).grid(...) 将返回 None。
你应该把它分成两行
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()
推荐阅读
- sails.js - Sailsjs 模型不断删除我的表格内容
- typescript - 在 ionic 3 或 4 上将启动画面作为视频?
- google-bigquery - BigQuery 返回无匹配签名
- angular - 当我想设置新的 loadingController 时,LoadingOption 出错
- vue.js - 将 uk-tab 与 Vue.js 一起使用时,所有选项卡元素都处于活动状态
- sql - 计算两个日期之间的秒数,包括营业时间,不包括节假日,开始时间 08:30
- vuejs2 - 如何在 vue-router 之前运行一些东西
- angular5 - Angular 5将单击事件的数据从父组件传递到在父组件单击的按钮上的子组件
- c++ - 使用OpenGL计算QT中2点之间线性插值的最快方法
- php - 为什么 curl_exec 不输出数据?