Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将一个GUI窗口链接到另一个GUI窗口_Python_Tkinter - Fatal编程技术网

Python 如何将一个GUI窗口链接到另一个GUI窗口

Python 如何将一个GUI窗口链接到另一个GUI窗口,python,tkinter,Python,Tkinter,我有两个单独的Python代码,我希望如果我在第一个GUI上单击一个按钮,那么就会打开一个新的GUI窗口,并在输入字段中输入内容 在单击第一个GUI上的按钮后,我能够成功地打开一个新的GUI窗口,但第二个窗口不接收我的输入。有人可以检查我的代码,并告诉我为什么我的第二个图形用户界面没有采取和输入。我粘贴了两个python代码的一部分,以保持简洁 当我在第一个代码中单击按钮YES时,会打开一个新的Python GUI窗口,但当我在输入字段中输入值并按下Pipe1 FWD按钮时,代码不会接受此输入

我有两个单独的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()