如何在Python中打开一个位于其他文件中的tkinter窗口?

6rqinv9w  于 2023-01-18  发布在  Python
关注(0)|答案(1)|浏览(114)

我最近开始使用Tkinter在python中开发一个程序,现在我想从另一个文件打开它。我有一个名为HomePage.py的主页文件,其中有一个按钮可以打开另一个名为VirusTotalAPI.py的文件。我没有找到任何答案,因为当我运行程序时,它会打开VirusTotalAPI.py文件,如果我关闭它,Homepage.py会运行。但按钮不起作用,如果我试图关闭它,它会打开HomePage.py

#Homepage.py

from tkinter import *
import VirusTotalAPI as vt 

Home_Window=Tk()

Home_Window.geometry("980x530")
Home_Window.title("VirusTotal By Carotide")
Home_Window.config(background="grey")

def Window_35_mo() : 
    vt.Window_35mo
    
Window_35_mo_open = Button()
Window_35_mo_open.config(text= "Fichier < 35 mo", command= Window_35_mo)
Window_35_mo_open.pack()

Home_Window.mainloop()

下一个是www.example.com中的一部分,因为该文件太长VirusTotalAPI.py because the file is too long

#VirusTotalAPI.py
import requests
import hashlib
import json
from tkinter import *
from tkinter import filedialog
import HomePage

Window_35mo = Tk()
Window_35mo.geometry("980x530")
Window_35mo.title("VirusTotal By Carotide")
Window_35mo.config(background="grey")

global files
global file_path

def retrieve_API():
    API_Value=GetAPIBox.get("1.0","end-1c")
    print(API_Value)

GetAPIBox=Text(Window_35mo, height=2, width=10)
GetAPIBox.pack()
API_Button=Button(Window_35mo, height=1, width=10, text="YourAPI", 
                    command=lambda: retrieve_API())

API_Button.pack()
Window_35mo.mainloop()

先谢谢你了。我试着用不同的方式导入它,像这样:

import VirusTotalAPI

或者这个:

from VirusTotalAPI import *

我也试着这么做:

from tkinter import *
from VirusTotalAPI import Window_35mo

Home_Window=Tk()

Home_Window.geometry("980x530")
Home_Window.title("VirusTotal By Carotide")
Home_Window.config(background="grey")
#homepage 
def winopen35mo() :
    Window_35mo
    
Window_35_mo_open = Button()
Window_35_mo_open.config(text= "Fichier < 35 mo", command= winopen35mo)
Window_35_mo_open.pack()

Home_Window.mainloop()

它告诉我:
导入错误:无法从部分初始化的模块'VirusScan TotalAPI'导入名称'Window_35mo'(很可能是由于循环导入)

uurity8g

uurity8g1#

我终于找到了如何做到这一点的解决办法:
首先我们需要导入操作系统、子进程和sys

from tkinter import *
import os
import subprocess
import sys

然后,我们声明文件的文件路径,对于这个文件,它是VirusTotalAPI.py,这样做:

GUI_VirusTotalAPI_Path = 'C:\\Users\\...\\VirusTotalAPI.py'

现在我们输入args,执行并输入路径名:

args = '"%s" "%s" "%s"' % (sys.executable,                  
                          GUI_VirusTotalAPI_Path,                     
                          os.path.basename(VirusTotalAPI))

现在我们创建一个函数,使用之前使用的args来运行这个函数:

def Open_GUI_VirusTotalAPI_35mo() :
   proc = subprocess.run(args)

然后另一个函数来破坏窗口:

def DestroyHomeWindow() : 
    Home_Window.destroy

最后,我们创建按钮并“告诉”它执行命令Open_GUI_VirusTotalAPI_35mo,同时关闭窗口:

Window_35_mo_open = Button()
Window_35_mo_open.config(text= "Fichier < 35 mo", command= lambda:[Home_Window.destroy(),Open_GUI_VirusTotalAPI_35mo()])
Window_35_mo_open.pack()

这就是我是怎么做到的,很抱歉解释得很差,我的英语也很差,希望这能帮助到一些人。

相关问题