Python 如何在另一个文件中打开tkinter中的多个窗口?
我的python代码有问题(tkinter) 我有两个文件(F1.py)和(F2.py),每个文件都是一个窗口,我还有另一个名为(main.py)的文件,它用两个按钮打开一个窗口,我想每次单击(F1)文件中的一个或(F2)打开。 我该怎么办? 这是我的代码:Python 如何在另一个文件中打开tkinter中的多个窗口?,python,python-3.x,user-interface,tkinter,Python,Python 3.x,User Interface,Tkinter,我的python代码有问题(tkinter) 我有两个文件(F1.py)和(F2.py),每个文件都是一个窗口,我还有另一个名为(main.py)的文件,它用两个按钮打开一个窗口,我想每次单击(F1)文件中的一个或(F2)打开。 我该怎么办? 这是我的代码: from tkinter import * main = Tk() def f1(): import f1.py # I do not know what to do to run the file f1.py here !
from tkinter import *
main = Tk()
def f1():
import f1.py
# I do not know what to do to run the file f1.py here !!
def f2():
import f2.py
# I do not know what to do to run the file f2.py here !!
btn_f2 = Button(main,text="open f2",command=f2).pack()
btn_f1 = Button(main,text="open f1",command=f1).pack()
mainloop()
以下是根据您的需要进行的工作,因为您希望从主python脚本执行另一个tkinter窗口。下面是实现这一点的方法 在你的主页上.py
from tkinter import *
import os
import sys
import f1,f2
main= Tk()
def open(filename):
os.chdir("D:\\PYTHON_FILES\\") #change this path to your path where your f1.py and f2.py is located
# print("current dir "+os.getcwd())
os.system('python '+filename) #runnning the python command on cmd to execute both windows
btn_f2 = Button(main,text="open f2",command=lambda: open("f1.py")).pack()
btn_f1 = Button(main,text="open f1",command=lambda: open("f2.py")).pack()
main.mainloop()
例如,现在定义f1.py
from tkinter import *
window= Tk()
window.title('f1 Hello Python')
window.geometry("300x200+10+10")
mainloop()
类似地,例如,我们有f2.py
from tkinter import *
window= Tk()
window.title('f2 Hello Python')
window.geometry("300x200+10+10")
mainloop()
现在,如果你想用Tinkter中的TopLevel实现这个目标,那么这里有一个干净完美的方法来实现这个目标
只需制作一个main.py,如下所示
from tkinter import *
root = Tk()
root.geometry("200x200")
#here define your f1 window
def f1():
top = Toplevel(root)
top.geometry("400x400")
top.title("I am f1 window smaller than f2 but bigger than root")
top.mainloop()
#Similarly here define your f2 window
def f2():
top = Toplevel(root)
top.geometry("500x500")
top.title("I am f2 window bigger than f1")
top.mainloop()
btn1 = Button(root, text = "open f1", command = f1)
btn2 = Button(root, text = "open f2", command = f2)
btn1.place(x=75,y=50)
btn2.place(x=75,y=20)
root.mainloop()
以下是根据您的需要进行的工作,因为您希望从主python脚本执行另一个tkinter窗口。下面是实现这一点的方法 在你的主页上.py
from tkinter import *
import os
import sys
import f1,f2
main= Tk()
def open(filename):
os.chdir("D:\\PYTHON_FILES\\") #change this path to your path where your f1.py and f2.py is located
# print("current dir "+os.getcwd())
os.system('python '+filename) #runnning the python command on cmd to execute both windows
btn_f2 = Button(main,text="open f2",command=lambda: open("f1.py")).pack()
btn_f1 = Button(main,text="open f1",command=lambda: open("f2.py")).pack()
main.mainloop()
例如,现在定义f1.py
from tkinter import *
window= Tk()
window.title('f1 Hello Python')
window.geometry("300x200+10+10")
mainloop()
类似地,例如,我们有f2.py
from tkinter import *
window= Tk()
window.title('f2 Hello Python')
window.geometry("300x200+10+10")
mainloop()
现在,如果你想用Tinkter中的TopLevel实现这个目标,那么这里有一个干净完美的方法来实现这个目标
只需制作一个main.py,如下所示
from tkinter import *
root = Tk()
root.geometry("200x200")
#here define your f1 window
def f1():
top = Toplevel(root)
top.geometry("400x400")
top.title("I am f1 window smaller than f2 but bigger than root")
top.mainloop()
#Similarly here define your f2 window
def f2():
top = Toplevel(root)
top.geometry("500x500")
top.title("I am f2 window bigger than f1")
top.mainloop()
btn1 = Button(root, text = "open f1", command = f1)
btn2 = Button(root, text = "open f2", command = f2)
btn1.place(x=75,y=50)
btn2.place(x=75,y=20)
root.mainloop()
说你的文件“是windows”或你想“运行”它们是没有意义的。你需要更清楚地思考这个问题,然后才能解决它。如果您的其他文件包含自己的
mainloop()
调用和其他立即发生的内容,那么您需要重新设计。另外,在import
语句中不使用.py
文件扩展名;您命名的是模块,而不是文件。我认为您可能需要后退几步,首先确保您正确理解基本原理。设计一个GUI并不是一件容易的事情。而且,这似乎不是一个运行文件的好方法,因为关闭它们并再次打开可能会很好。例如,如果你按两次按钮和我看到的其他东西,你必须创建一个类(或一个函数,但类可能更容易被预处理),会发生什么然后导入它并从那里启动windows,因此您可以使用TopLevel。关于tkinter的更多信息还可以添加其他文件中的代码吗?这里的关键是让创建窗口的f1.py
中的所有代码都位于名为f1
的函数内,与f2
的函数内。然后您的文件可以从f1导入f1的和f2导入f2的开始。说您的文件“是窗口”或您想“运行”它们是没有意义的。你需要更清楚地思考这个问题,然后才能解决它。如果您的其他文件包含自己的mainloop()
调用和其他立即发生的内容,那么您需要重新设计。另外,在import
语句中不使用.py
文件扩展名;您命名的是模块,而不是文件。我认为您可能需要后退几步,首先确保您正确理解基本原理。设计一个GUI并不是一件容易的事情。而且,这似乎不是一个运行文件的好方法,因为关闭它们并再次打开可能会很好。例如,如果你按两次按钮和我看到的其他东西,你必须创建一个类(或一个函数,但类可能更容易被预处理),会发生什么然后导入它并从那里启动windows,因此您可以使用TopLevel。关于tkinter的更多信息还可以添加其他文件中的代码吗?这里的关键是让创建窗口的f1.py
中的所有代码都位于名为f1
的函数内,与f2
的函数内。然后您的文件可以从f1导入f1
的和f2导入f2的开始。感谢这段代码的有效性,但是当我想要一个带有main.py的make exe文件时,这不起作用。看看您是否使用答案中的第一种方法,那么这是不可行的,或者说是处理GUI的合法方法,因为现在你想让你的程序执行,所以从程序的第二种方法是可行的或正确的方式。因此,即使在生成exe之后,第二种方法也可以完美地工作。如果您仍然面临问题,请告诉我。请尝试第二种方法,但我在代码中给出了此错误:image“pyimage5”“不存在”您用于创建exe的模块是什么?我使用pyinstaller模块验证此代码有效,但当我想要一个带有main.py的make exe文件时,此代码无效。请查看您是否使用答案中的第一种方法,然后这是不可行的,或者说这是处理GUI的合法方法,因为现在你想让你的程序执行,所以从程序的第二种方法是可行的或正确的方式。因此,即使在生成exe之后,第二种方法也可以完美地工作。如果您仍然面临问题,请告诉我。请尝试第二种方法,但我从代码中给出了此错误:图像“pyimage5”不存在“您用于创建exe的模块是什么?我使用pyinstaller模块