不同处
# province_comb=Combobox(stu_add_win,width=13,textvariable=province_text,values=provinces,state='readonly')
province_comb = Combobox(stu_add_win, width=13, values=provinces, state='readonly')
失败代码
#菜单组件
import time
from tkinter import Menu,Tk,Toplevel,Label,Entry,Button
import tkinter as tk
from tkinter.ttk import Combobox,Radiobutton
#添加学生信息
def pop_add_stu_win():
stu_add_win=Toplevel()
stu_add_win.title('添加学生')
width=250
height=300
screen_width,screen_height=stu_add_win.maxsize()
stu_add_win.geometry('%dx%d+%d+%d'%(width,height,(screen_width-width)/2,(screen_height-height)/2))
#添加组件
Label(stu_add_win,text='姓名',width=10).grid(row=1,column=0)
user_name =tk.StringVar()
Entry(stu_add_win,textvariable=user_name,width=15).grid(row=1,column=1)
Label(stu_add_win,text='电话',width=10).grid(row=2,column=0)
user_phone =tk.StringVar()
Entry(stu_add_win,textvariable=user_phone,width=15).grid(row=2,column=1)
#下拉列表
# province_text=tk.StringVar() #不同处
Label(stu_add_win, text='省份', width=10).grid(row=3, column=0)
provinces=['河北','上海','河南','四川']
# province_comb=Combobox(stu_add_win,width=13,textvariable=province_text,values=provinces,state='readonly')
province_comb = Combobox(stu_add_win, width=13, values=provinces, state='readonly')
province_comb.current(0)
province_comb.grid(row=3,column=1)
root=Tk()
root.title('主窗体')
root.geometry('300x500+500+100')
#自定义菜单
menuBar=Menu(master=root)
root.configure(menu=menuBar)
stu_menu=Menu(menuBar,tearoff=0)
stu_menu.add_command(label='添加',command=pop_add_stu_win)
stu_menu.add_command(label='查询',command='')
menuBar.add_cascade(label='学生',menu=stu_menu)
root.mainloop()
成功代码
#菜单组件
import time
from tkinter import Menu,Tk,Toplevel,Label,Entry,Button
import tkinter as tk
from tkinter.ttk import Combobox,Radiobutton
#添加学生信息
def pop_add_stu_win():
stu_add_win=Toplevel()
stu_add_win.title('添加学生')
width=250
height=300
screen_width,screen_height=stu_add_win.maxsize()
stu_add_win.geometry('%dx%d+%d+%d'%(width,height,(screen_width-width)/2,(screen_height-height)/2))
#添加组件
Label(stu_add_win,text='姓名',width=10).grid(row=1,column=0)
user_name =tk.StringVar()
Entry(stu_add_win,textvariable=user_name,width=15).grid(row=1,column=1)
Label(stu_add_win,text='电话',width=10).grid(row=2,column=0)
user_phone =tk.StringVar()
Entry(stu_add_win,textvariable=user_phone,width=15).grid(row=2,column=1)
#下拉列表
# province_text=tk.StringVar()
Label(stu_add_win, text='省份', width=10).grid(row=3, column=0)
provinces=['河北','上海','河南','四川']
# province_comb=Combobox(stu_add_win,width=13,textvariable=province_text,values=provinces,state='readonly')
province_comb = Combobox(stu_add_win, width=13, values=provinces, state='readonly')
province_comb.current(0)
province_comb.grid(row=3,column=1)
root=Tk()
root.title('主窗体')
root.geometry('300x500+500+100')
#自定义菜单
menuBar=Menu(master=root)
root.configure(menu=menuBar)
stu_menu=Menu(menuBar,tearoff=0)
stu_menu.add_command(label='添加',command=pop_add_stu_win)
stu_menu.add_command(label='查询',command='')
menuBar.add_cascade(label='学生',menu=stu_menu)
root.mainloop()
该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
在你的代码中,你已经通过调用province_comb.current(0)将下拉列表的默认值设置为了第一个元素,但是在调用grid方法之前,你没有通过province_comb的textvariable属性将默认值绑定到一个变量上。
你可以在调用province_comb.current(0)之后,将选中的值赋值给一个变量,如下所示:
province_text = tk.StringVar(value=provinces[0])
province_comb = Combobox(stu_add_win, width=13, textvariable=province_text, values=provinces, state='readonly')
然后在调用grid方法之前,将province_comb和province_text绑定起来,如下所示:
province_comb['textvariable'] = province_text
province_comb.grid(row=3, column=1)
这样就可以设置默认值了。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢
class BalloonTk():#使用tk窗口来实现弹窗效果,目前是覆盖整个屏幕
def __init__(self,text,fg='',bg='',alpha=1):
self.fg=fg
self.bg=bg
self.text=text
self.alpha=alpha
def destroy(self,event):#点击关闭
self.a.destroy()
def show(self,heigh,nobg=False):#移动模块
alpha=self.alpha
fg=self.fg
bg=self.bg
text=self.text
a=Tk()
a.bind('<Button-1>',self.destroy)#点击删除
a.overrideredirect(True)
a.attributes('-alpha',alpha)
a.attributes('-topmost',True)
self.a=a
word=Label(a,text=text,font=('宋体',13),fg=fg,bg=bg).pack(fill='both')
if nobg==True:
a.attributes('-transparentcolor',bg)
for i in range(0,a.winfo_screenwidth(),2)[::-1]:
try:#如果被点击删除,则退出线程
a.update()
a.geometry('+'+str(i)+'+'+str(heigh))
slp(0.03)
except:
return
a.destroy()
def start(self,heigh,nobg=False):#多线程启动弹幕
Thread(target=lambda:self.show(heigh,nobg)).start()