gpt4 book ai didi

python - Tkinter 标签未显示在弹出窗口中

转载 作者:行者123 更新时间:2023-12-01 01:18:01 25 4
gpt4 key购买 nike

我最近开始使用 python 编码,Stack Overflow 似乎是一个来源,我可能遇到的所有错误都已经被其他人询问并回答了。这次我遇到了错误并且没有找到答案。

我使用 tkinter 和 GUI 编写了一个应用程序。在此应用程序的一部分中,用户按下主机上的按钮以打开另一个窗口并输入数据。之后用户关闭弹出窗口,程序将处理数据。在此弹出窗口中,条目小部件旁边的标签不会出现。

我用谷歌搜索了很多并尝试过:- 调用更新。方法。- 检查标签是否出现在主机中- 重新启用弹出窗口的大小调整- 将代码隔离在不同的文件中,标 checkout 现在此处

看来我的主窗口中的某些内容阻止了标 checkout 现在弹出窗口中?或者我忘记告诉程序做一些事情来主动显示标签?

import tkinter as tk, sys
from tkinter import StringVar, Tk
from tkinter.filedialog import askopenfilename

root = tk.Tk()
root.title("title")
w = tk.Label(root, text="text")
w.pack()

# This is the code snippet that works isolated, but not in this context
def enter_deadline():
det_window = tk.Tk()
# Enter deadline
shime_text = StringVar()
shime_text.set("〆切月日記入:")
label_shime=tk.Label(det_window, textvariable=shime_text, height=6)
label_shime.pack(side="left", padx = 20, pady=20)
shime_val = StringVar(None)
det_shime = tk.Entry(det_window,textvariable=shime_val, width=20)
det_shime.pack(side="left", padx = 20, pady=20)

def killme():
det_window.destroy()
det_button = tk.Button(det_window, text='スタート',command=killme).pack()
det_window.mainloop()


# Make pop-up window for PO
def create_POW():
try:
Tk().withdraw()
# show an "Open" dialog box and return the path
po_filename = askopenfilename()
po_file = open(po_filename, 'rb')
enter_deadline()
except Exception as e:
print("ファイルエラー")
print(e)
sys.exit()

# lots of repititive code for buttons
button3 = tk.Button(root, text='PO',command=create_POW).pack()

root.mainloop()

由于孤立的代码片段做了它应该做的事情,所以我似乎还缺少其他东西。

提前致谢。安德烈亚斯

最佳答案

主要问题是您创建了多个 Tk() 实例(当您单击 button3 时创建了一个新实例)。因此,将 det_window 更改为 Toplevel 的实例,并删除在 enter_deadline() 函数内调用 det_window.mainloop() 。同时删除 create_POW() 函数内的语句 Tk().withdraw()

下面是经过上述更改后的修改后的代码:

import tkinter as tk, sys
from tkinter import StringVar, Tk
from tkinter.filedialog import askopenfilename

root = tk.Tk()
root.title("title")
w = tk.Label(root, text="text")
w.pack()

# This is the code snippet that works isolated, but not in this context
def enter_deadline():
det_window = tk.Toplevel() # changed from tk.Tk()
# Enter deadline
shime_text = StringVar()
shime_text.set("〆切月日記入:")
label_shime=tk.Label(det_window, textvariable=shime_text, height=6)
label_shime.pack(side="left", padx = 20, pady=20)
shime_val = StringVar(None)
det_shime = tk.Entry(det_window,textvariable=shime_val, width=20)
det_shime.pack(side="left", padx = 20, pady=20)

def killme():
det_window.destroy()
tk.Button(det_window, text='スタート',command=killme).pack()
#det_window.mainloop()


# Make pop-up window for PO
def create_POW():
try:
#Tk().withdraw()
# show an "Open" dialog box and return the path
po_filename = askopenfilename()
po_file = open(po_filename, 'rb')
enter_deadline()
except Exception as e:
print("ファイルエラー")
print(e)
sys.exit()

# lots of repititive code for buttons
button3 = tk.Button(root, text='PO',command=create_POW).pack()

root.mainloop()

关于python - Tkinter 标签未显示在弹出窗口中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54122578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com