【问题标题】:Opening a tkinter window depending on "if" statements根据“if”语句打开 tkinter 窗口
【发布时间】:2020-08-06 00:45:56
【问题描述】:

在输入几个选项​​并按下“继续”按钮后,我正试图让程序打开窗口。

下面的代码是if 语句,用于筛选选项,如果按下正确的序列,它将打开一个窗口,我做了但它没有打开文件。我不确定这是否在正确的代码附近,但没有错误并且没有打开文件)。我正在尝试打开文件以使其可用,即:您可以与之交互的新 tkinter 屏幕。

if price == 'one':
    if periph == 'one':
        if Lights == 'one':
            exec(open('C:\\Tkinter\\CBG_Save_Prebuild_Screen.py'))

【问题讨论】:

  • 请不要exec Python 文件。 import 代替它。
  • 很难具体说明,因为您的问题缺少很多信息……但是您可以随时通过调用Toplevel() 来创建新的 tkinter 窗口,无论出于何种原因(即由于 if 语句)创建它们,请注意,当您调用 Tk() 初始化模块时,这会自动为您完成。
  • 嗨,我正在尝试打开一个我已经创建的窗口。我试图在“if”语句完成后打开它,所以基本上 exec(open(c: _____) 行是我当前用来尝试打开该文件的代码行,我不确定那是正确的代码还是什么代码我需要这样做。希望能更好地解释它。我对编码很陌生,所以我不太了解。感谢您的帮助
  • 您确定您的代码甚至以正确的顺序到达 exec 语句。因为如果确实如此,根据this 帖子中的信息,我认为它应该引发错误。正确的行是 - exec(open('C:\\Tkinter\\CBG_Save_Prebuild_Screen.py').read())
  • 我试过了,但它没有给我错误或打开屏幕。我想拥有它,这样它就会打开屏幕,这样你就可以在有意义的情况下使用它。

标签: python tkinter


【解决方案1】:

1.方法
你可以像这样导入CBG_Save_Prebuild_Screen.py

import CBG_Save_Prebuild_Screen 

import .CBG_Save_Prebuild_Screen

from .CBG_Save_Prebuild_Screen import *

编辑

如果您将 OOP 用于 tkinter,您只需在

中添加 {Your tkinter class}
if __name__ == "__main__":

但如果您不使用 OOP,您可以将您的小部件插入到 CBG_Save_Prebuild_Screen.py 的 def 中,然后在 if 语句中调用您的小部件

2。方法
你可以像这样执行文件

import os               

os.system("python CBG_Save_Prebuild_Screen.py") #For python 2         
os.system("python3 CBG_Save_Prebuild_Screen.py") #For python 3

编码愉快!

【讨论】:

  • 嗨,从第一种方法我如何从'if'语句中调用它?谢谢
【解决方案2】:

对于你的具体问题,你可以试试这个

if price == 'one':
    if periph == 'one':
        if Lights == 'one':
              import CBG_Save_Prebuild_Screen.py
#if both your.py file are in same folder

您也可以通过os.startfile() 进行此操作

os.startfile() 方法允许我们start 一个文件及其关联的程序。换句话说,我们可以使用相关程序打开文件,就像双击 PDF 并在 Adob​​e Reader 中打开一样。

import os
if price == 'one':
    if periph == 'one':
        if Lights == 'one':     
                  
              path='C:\\Tkinter\\CBG_Save_Prebuild_Screen.py'
              os.startfile(path)

我觉得对你有帮助

【讨论】:

  • 你好,我尝试了你的第一种方法,它没有给我一个错误,但它也没有打开文件。第二种方法报错:path='C:\\Tkinter\\CBG_Save_Prebuild_Screen.py'))
  • Opps 我忘了删除那些)) 现在我已经编辑了你可以试试第二个
  • 你关闭了用.mainloop()创建的第二个窗口
  • 使用方法 2 会将脚本作为新进程执行,因此您无法与它作为 OP 请求进行交互:您可以与之交互的新 tkinter 屏幕
  • 它只是打开了它实际上并没有打开它的文件,所以它会显示 tkinter 窗口。当 if 语句完成时,我试图让它打开 tkinter 窗口。
猜你喜欢
  • 2023-02-13
  • 2021-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-18
  • 1970-01-01
  • 2018-11-17
  • 2019-08-07
相关资源
最近更新 更多