关于以下工作代码,我有一些一般性的问题:
import tkinter as tk
和from tkinter import *
做的完全一样,但在第一个我有别名?< code >H19在下面的代码中,为什么我必须在ttk.Progressbar
中使用ttk?
我用import tkinter as tk
导入了整个库,那么为什么我必须只为进度条重新导入ttk呢?(否则它不起作用)。我希望做某事。和tk.Progressbar
btnProg = tk.Button(self.root, text = 'update', command=self.fnUpdateProgress)
一样,为什么方法"fnUpdateProgress“不能有任何变量?每当我添加任何内容时,按钮都会停止工作吗?-> --例如,btnProg = tk.Button(self.root, text = 'update', command=self.fnUpdateProgress(24))
(ofc --然后对方法本身的def做了一些更改)--
代码:
import tkinter as tk
from tkinter import *
from tkinter import ttk
from CreateProgramMain import main
import GlobalVariables
class Test():
####################################################################################
def __init__(self):
self.Progress=0
self.root = tk.Tk()
self.root.title(GlobalVariables.strAppName)
self.root.geometry('400x200')
lbl = Label(self.root, text="Please choose environment.",font=("Arial Bold", 12))
lbl.grid(column=2, row=0,sticky='e')
def btnTestClicked():
main("TEST",self)
btnTest=tk.Button(self.root, text="Test Environment", command=btnTestClicked)
btnTest.grid(column=2, row=15)
#Place progress bar
pb = ttk.Progressbar(self.root,orient='horizontal',mode='determinate',length=200)
pb.grid(column=1, row=65, columnspan=2, padx=10, pady=20)
pb["value"]=self.Progress
pb["maximum"]=100
btnProg = tk.Button(self.root, text = 'update', command=self.fnUpdateProgress)
btnProg.grid(column=2, row=75)
self.root.mainloop()
def fnUpdateProgress(self): #why i cant insert variable inside?
pb["value"]=self.Progress
self.Progress=self.Progress+5
pb.update()
app = Test()
谢谢
发布于 2021-08-28 23:13:54
,
tkinter
和kivy
都有它们自己的语法、命令和它们自己的用法。将kivy
.tkinter
代码可能有点困难,这取决于您tkinter
导入为tk
。在第二个。你已经做了一个外卡进口。您已经导入了everythingttk.py
的文件,您必须导入该文件才能访问ttk.py
。所有其他类,如Label
、Entry
、Tk
都存在于__init__.py
中。
。
执行command=self.fnUpdateProgress(24))
将立即执行该函数。然后,将返回的值保存为命令。在这里,它返回None
。所以这个命令什么都不是,或者按钮是无用的。
使用lambda
表达式command=lambda: self.fnUpdateProgress(24))
self
,它将仅是函数的本地函数。若要访问ot,则必须声明为全局的,这是使用类时要避免的问题。
https://stackoverflow.com/questions/68970568
复制相似问题