【发布时间】:2016-04-18 16:15:25
【问题描述】:
所以由于某种原因,tkinter 中的 scale 函数不想在比例上输出数字。我收到的只是 0.0 或什么都没有。它似乎与 GUI 和通过 GUI 调用函数有关。在 python 3.4 中编写和运行。
from tkinter import *
from tkinter import ttk
from tkinter import messagebox
iterations=30
def settings():
global itervar, iterscale
sGui = Tk()
itervar = DoubleVar()
iterscale = Scale(sGui, orient="horizontal", from_=1, to=1000, variable=itervar)
iterscale.pack()
iterbutton = Button(sGui, text="Save Settings", command=saveSettings)
iterbutton.pack()
sGui.mainloop()
def saveSettings():
global iterations
iterations = itervar.get()
print(iterations)
def doNothing():
pass
def main():
global root, version
root= Tk()
menu = Menu(root)
root.config(menu=menu)
fileMenu = Menu(menu)
menu.add_cascade(label="File", menu=fileMenu)
fileMenu.add_command(label="Quit", command=quit)
benchmarkMenu = Menu(menu)
menu.add_cascade(label="Benchmark", menu=benchmarkMenu)
benchmarkMenu.add_command(label="Run [All]", command=doNothing)
benchmarkMenu.add_separator()
benchmarkMenu.add_command(label="Settings", command=settings)
root.mainloop()
#Main
main()
我自己尝试了 settings 和 saveSettings 函数,它们工作正常,但是当我通过 GUI 调用它时,它似乎不起作用。
关于这个问题的任何想法,我唯一的解决方案是将 settings 函数和 saveSettings 函数放在不同的文件中,然后使用 os.startfile("etc...") 在外部运行该文件
【问题讨论】:
-
为什么在
settings函数中调用sGui.mainloop()? -
这样设置窗口在运行时保持打开状态?!?!
-
.... 哦,这是另一个
Tk实例... 好的,您需要将其更改为Toplevel以便它将作为主程序的另一个窗口存在。 -
topmost 只允许窗口停留在主 GUI 前面
-
FWIW,一个程序中的根
Tk()窗口不能超过一个,mainloop调用不能超过一个。
标签: python tkinter global-variables scrollbar