Python 如何将一个GUI窗口链接到另一个GUI窗口
我有两个单独的Python代码,我希望如果我在第一个GUI上单击一个按钮,那么就会打开一个新的GUI窗口,并在输入字段中输入内容 在单击第一个GUI上的按钮后,我能够成功地打开一个新的GUI窗口,但第二个窗口不接收我的输入。有人可以检查我的代码,并告诉我为什么我的第二个图形用户界面没有采取和输入。我粘贴了两个python代码的一部分,以保持简洁 当我在第一个代码中单击按钮YES时,会打开一个新的Python GUI窗口,但当我在输入字段中输入值并按下Pipe1 FWD按钮时,代码不会接受此输入 第一和第二代码:Python 如何将一个GUI窗口链接到另一个GUI窗口,python,tkinter,Python,Tkinter,我有两个单独的Python代码,我希望如果我在第一个GUI上单击一个按钮,那么就会打开一个新的GUI窗口,并在输入字段中输入内容 在单击第一个GUI上的按钮后,我能够成功地打开一个新的GUI窗口,但第二个窗口不接收我的输入。有人可以检查我的代码,并告诉我为什么我的第二个图形用户界面没有采取和输入。我粘贴了两个python代码的一部分,以保持简洁 当我在第一个代码中单击按钮YES时,会打开一个新的Python GUI窗口,但当我在输入字段中输入值并按下Pipe1 FWD按钮时,代码不会接受此输入
import sys
from Tkinter import *
import Prog2 as ofnew
def askOffsets():
print 'Correct till here'
of = ofnew.AddOffset()
mGui = Tk()
mGui.geometry('1000x600+150+100')
buttonYesOffsets = Button(text = 'YES', command = askOffsets)
buttonYesOffsets.place(x = 300, y = 350)
mGui.mainloop()
在单个Tkinter应用程序中,您应该只创建一个
Tk
的实例,并且应该只调用一次mainloop
。在您的例子中,每个文件都在创建自己的Tk
实例
如果需要多个窗口,则除根窗口外的每个窗口都需要是
Toplevel
的一个实例。当使用Toplevel时,程序会为多个新窗口正确打印条目小部件的内容。代码修改为来自一个文件而不是两个文件
from Tkinter import *
##import Prog2 as ofnew
import sys
##from Tkinter import *
import time, datetime
##from numpy import arange
class AddOffset():
def getOffsetsPipe1FWD(self):
print 'Correct'
temp1 = self.StartFreqOffsets.get()
print temp1
def __init__(self, top):
self.mOffsets = Toplevel(top)
## all new windows will be at the same location
## (on top of each other)
self.mOffsets.geometry('1000x600+100+100')
self.mOffsets.title('Enter the Offsets')
self.StartFreqOffsets = DoubleVar()
self.StartFreqOffsets.set(1)
labelenterStartFreqOffsets = Label(self.mOffsets, text = 'Enter the Start Frequency (in MHz):')
labelenterStartFreqOffsets.place(x = 0, y = 50)
Entry(self.mOffsets, textvariable = self.StartFreqOffsets).place(x = 250, y = 50)
buttonPipe1FWD = Button(self.mOffsets, text = 'Pipe 1 FWD',
command = self.getOffsetsPipe1FWD)
buttonPipe1FWD.place(x = 30, y = 300)
def askOffsets():
print 'Correct till here'
of = AddOffset(mGui)
mGui = Tk()
mGui.geometry('1000x600+150+100')
buttonYesOffsets = Button(text = 'YES', command = askOffsets)
buttonYesOffsets.place(x = 300, y = 350)
mGui.mainloop()
是的,我认为一般来说,对于其他窗口,我们应该使用
Toplevel
小部件的实例,但情况并非总是如此,至少我在effbot.org网站上读过一次。我们知道,对于每个Tk
实例,都有一个相关的Tcl解释器在后台运行(如果我没有错的话),因此在多个Tk实例的情况下,我们有多个Tcl解释器在后台运行。因此,如果这是正确的,是否有任何特殊情况下,在后台运行多个Tcl解释器会很有用?
from Tkinter import *
##import Prog2 as ofnew
import sys
##from Tkinter import *
import time, datetime
##from numpy import arange
class AddOffset():
def getOffsetsPipe1FWD(self):
print 'Correct'
temp1 = self.StartFreqOffsets.get()
print temp1
def __init__(self, top):
self.mOffsets = Toplevel(top)
## all new windows will be at the same location
## (on top of each other)
self.mOffsets.geometry('1000x600+100+100')
self.mOffsets.title('Enter the Offsets')
self.StartFreqOffsets = DoubleVar()
self.StartFreqOffsets.set(1)
labelenterStartFreqOffsets = Label(self.mOffsets, text = 'Enter the Start Frequency (in MHz):')
labelenterStartFreqOffsets.place(x = 0, y = 50)
Entry(self.mOffsets, textvariable = self.StartFreqOffsets).place(x = 250, y = 50)
buttonPipe1FWD = Button(self.mOffsets, text = 'Pipe 1 FWD',
command = self.getOffsetsPipe1FWD)
buttonPipe1FWD.place(x = 30, y = 300)
def askOffsets():
print 'Correct till here'
of = AddOffset(mGui)
mGui = Tk()
mGui.geometry('1000x600+150+100')
buttonYesOffsets = Button(text = 'YES', command = askOffsets)
buttonYesOffsets.place(x = 300, y = 350)
mGui.mainloop()