我有两个单独的Python代码,我希望如果单击第一个GUI上的按钮,则应打开一个新的GUI窗口并将其输入到输入字段中。
单击第一个GUI上的按钮后,我能够成功打开一个新的GUI窗口,但是第二个窗口没有输入我的输入。有人可以检查我的代码,并告诉我为什么我的第二个GUI没有采取和输入。我粘贴了我的两个python代码的一部分,以保持简洁。
当我在第一个代码中单击YES按钮时,将打开一个新的Python GUI窗口,但是当我在输入字段中输入值并按下Pipe 1 FWD Button时,代码不会接受此输入。
第一和第二代码:
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()
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):
self.mOffsets = Tk()
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)
self.entryStartFreqOffsets = 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)
self.mOffsets.mainloop()
答案 0 :(得分:1)
在单个Tkinter应用程序中,您应该只创建 Tk
的单个实例,并且您应该只调用 mainloop
一次。在您的情况下,每个文件都创建自己的 Tk
实例。
如果你想要多个窗口,除了根窗口之外的每个窗口都需要是 Toplevel
的实例。
答案 1 :(得分:0)
当使用Toplevel时,程序会为多个新窗口正确打印Entry小部件的内容。代码修改为来自一个文件而不是两个
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()