初做GUI界面开发遇到问题集合(一)

1.button按钮执行带参数的函数

import tkinter as tk
def run():
    print('不带参数')

def add(a,b):
    sum =a +b
    print(f'带参数运行,sum={sum}')

if __name__ == '__main__':
    root = tk.Tk()
    buttonLogin1 = tk.Button(root, text="button1", command=run)
    buttonLogin2 = tk.Button(root, text="button2", command=lambda :add(1,2))
    buttonLogin1.grid(row=0, column=0, sticky=tk.W, padx=20)
    buttonLogin2.grid(row=0, column=1, sticky=tk.W, padx=20)
    root.mainloop()

 2.带输入框的计算界面

import tkinter as tk
def run():
    print('不带参数')

def add(a,b):
    sum =(a) +b
    print(f'带参数运行,sum={sum}')

if __name__ == '__main__':
    root = tk.Tk()
    label_1 = tk.Label(root, text="请输入数字:")
    label_1.grid(row=0, column=0)
    entry_1 = tk.Entry(root)
    entry_2 = tk.Entry(root)
    entry_1.grid(row=0, column=1)  # entry1占据1列1行     column列  row行
    entry_2.grid(row=0, column=2)  # entry2占据1列2行
    buttonLogin1 = tk.Button(root, text="button1", command=run)
    #输入框获取的值为字符串,所以想要指向加法结果要将数据转化eval()能够将数据转换数据类型
    buttonLogin2 = tk.Button(root, text="button2", command=lambda :add(eval(entry_1.get()),eval(entry_2.get())))
    buttonLogin1.grid(row=1, column=0, sticky=tk.W, padx=20)
    buttonLogin2.grid(row=0, column=4, sticky=tk.W, padx=20)
    buttonExit = tk.Button(root, text="退出", command=root.quit)
    buttonExit.grid(row=10, column=1)
    root.mainloop()

3. 下拉列表无法实现自动更新问题

在上面的代码基础上加上
def choice():
    png_name = os.listdir('放大图')  #此处放大图为文件夹的名字
    return png_name
if __name__ == '__main__':
    root = tk.Tk()
    png_name = choice()
    comvalue1 = tk.StringVar()  # 窗体自带的文本,新建一个值
    comvalue2 = tk.StringVar()

    comboxlist1 = ttk.Combobox(root,width=15, textvariable=comvalue1)  # 初始化
    comboxlist2 = ttk.Combobox(root,width=15, textvariable=comvalue2) # 初始化


    comboxlist1["values"] = png_name   #下拉列表值为读取放大图文件夹下的文件名
    comboxlist2["values"] = png_name

    comboxlist1.grid(row=3, column=1)
    comboxlist2.grid(row=3, column=4)
    ......#后面接上分的代码

 代码执行结果,如果在放大图的文件夹下修改或者删除图片的话,这两个下拉列表就无法实时更新,在网上查找资料因为tk会卡顿,所以采取了一个折中的办法:制作了一个按钮来更新列表

def flush():

    png_name = choice()
    print(f'正在加载更新的数据{png_name}')

    # comboxlist1["values"] = png_name
    # comboxlist2["values"] = png_name
    comboxlist1["values"] = png_name
    comboxlist2["values"] = png_name

if __name__ == '__main__':
    ....
    buttonLogin_update = tk.Button(root, text="更新列表", command=flush)
    buttonLogin_update.grid(row=4,column=7)
    ...

最后就能够实现每按一次按钮就会更新一个下拉列表的数据。 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值