cqwcns 发表于 2022-3-18 11:42

python tkinter控件赋值的问题

以下Demo,我希望选择Radiobutton,对t进行赋值,但t = v.get()语句无效。
不知道应该怎么写,请指教,谢谢。


from tkinter import *
from tkinter.ttk import *


class function:
    def change_value(v, t):
      print(v.get())
      t = v.get()


class start_gui(Tk):
    def __init__(self, parent):
      self.parent = parent

    def set_window(self):
      w = self.parent

      # 创建内容容器
      content = Frame(w, padding=(30, 20, 30, 20))

      v = IntVar()
      v.set(0)
      t = 0

      fm_col_type = Frame(content)
      fm_col_type.grid(column=0, row=0, sticky=(
            E, W),padx=(15, 0), pady=(15, 0))

      rbt_col_type_field = Radiobutton(
            fm_col_type, text='字段名', variable=v, value=0, command=lambda: function.change_value(v, t))
      rbt_col_type_field.grid(column=0, row=0)

      rbt_col_type_col = Radiobutton(
            fm_col_type, text='列名', variable=v, value=1, command=lambda: function.change_value(v, t))
      rbt_col_type_col.grid(column=1, row=0, padx=(15, 0))

      # 选择结果显示
      lb_col_name = Label(content, text=t)
      lb_col_name.grid(column=0, row=1, pady=20)

      # 渲染容器
      content.grid(column=0, row=0)


def action():
    root = Tk()
    window = start_gui(root)
    window.set_window()

    root.mainloop()


if __name__ == '__main__':
    action()



许清渠 发表于 2022-3-18 12:41

你的t是局部变量,change_value方法没有返回值

武神太乙 发表于 2022-3-18 14:32

你的t是局部变量,change_value方法没有返回值 的

gunxsword 发表于 2022-3-18 16:30

你这个我不懂,但是做UI,你可以了解一下PYSIDE6 这个做界面功能强大,有设计工具,而且代码也不是很复杂,还是亲儿子

页: [1]
查看完整版本: python tkinter控件赋值的问题