Tkinter/Python:框架无法提升

2024-04-25 17:56:36 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我想知道为什么我的显示页面没有提升时,确定按钮被按下主页。我已经切断了我的大部分代码(为了让它更接近错误的点,所以它有点分段,但基本上我创建了2帧(MainPage和DisplayPage),并希望基本上让用户输入数据到MainPage,然后按下next按钮以显示/输出DisplayPage中的输入数据。你知道吗

下面是创建意外结果的代码部分。你知道吗

from Tkinter import *
import Tkinter as tk
import os

class page(tk.Frame):
    def __init__(self, *args, **kwargs):
        tk.Frame.__init__(self, *args, **kwargs)
    def show(self):
        self.lift()

class DisplayPage(page):
    def __init__(self, *args, **kwargs):
        page.__init__(self, *args, **kwargs)
        # deleted - however will upload if needed more information about my code

class MainPage(tk.Frame):
    def __init__(self, *args, **kwargs):
        tk.Frame.__init__(self, *args, **kwargs)
        p1 = DisplayPage(self)

# create all of the main containers 
        frame_A = Frame(self, width=930, height=780)
        frame_B = Frame(self, width=465, height=280)
        frame_C = Frame(self, width=465, height=280)
        frame_D = Frame(self, width=465, height=140)
        frame_E = Frame(self, width=465, height=70)

        # layout all of the main containers

        frame_A.grid(row=0, column=0, columnspan=2, rowspan=3)
        frame_B.grid(row=0, column=3)
        frame_C.grid(row=1, column=3)
        frame_D.grid(row=2, column=3)
        frame_E.grid(row=3, column=3)

        # next ok button

        content4= Frame(frame_E)
        ok = tk.Button(content4, text="Locate", font =('Roboto Thin', 30), command= p1.lift)
        ok.pack()

        # layout all widgets

        content1.grid(column=0, row=0)
        content2.grid(column=3, row=1)
        content3.grid(column=3, row=2)
        content4.grid(column=3, row=3)

        namelbl.grid(column=3, row=1)
        name.grid(column=3, row=6)
        namelbl2.grid(column=3, row=5)
        name2.grid(column=3, row=8)
        namelbl3.grid(column=3, row=7)
        name3.grid(column=3, row=10)
        one.grid(column=3, row=2)
        two.grid(column=3, row=3)
        three.grid(column=3, row=4)
        ok.grid(column=3, row=11)
        namelbl4.grid(column=3, row=9) 

        p1.show()

if __name__ == "__main__":
    root = tk.Tk()
    main = MainPage(root)
    main.pack(side="top", fill="both", expand=True)
    root.wm_title('MobilePark Simulator')
    root.wm_geometry("1300x830")
    root.mainloop()  

Tags: selfinitmainargscolumnrootwidthframe
1条回答
网友
1楼 · 发布于 2024-04-25 17:56:36

必须创建顶层窗口。我修改了你的代码,但只把最必要的放进去了。您也可以将小部件放置在顶级窗口中(请参阅标签)。你知道吗

import Tkinter as tk
import os

class MainPage(tk.Frame):
    def __init__(self, *args, **kwargs):
        tk.Frame.__init__(self, *args, **kwargs)
        self.p1flag=0           # EDIT1
        self.p1=tk.Toplevel(self)
        self.p1.title("Hello")
        self.p1label=tk.Label(self.p1,text="FYI "*20)
        self.p1label.pack()

# create all of the main containers 
        frame_A = tk.Frame(self, width=930, height=780)
        frame_B = tk.Frame(self, width=465, height=280)
        frame_C = tk.Frame(self, width=465, height=280)
        frame_D = tk.Frame(self, width=465, height=140)
        frame_E = tk.Frame(self, width=465, height=70)

        frame_A.grid(row=0, column=0, columnspan=2, rowspan=3)
        frame_B.grid(row=0, column=3)
        frame_C.grid(row=1, column=3)
        frame_D.grid(row=2, column=3)
        frame_E.grid(row=3, column=3)

        content4= tk.Frame(frame_E)
        self.ok = tk.Button(content4, text="Locate", font =('Roboto Thin', 30), command= self.show_p1)  # EDIT2
        self.ok.pack()

        # layout all widgets
        content4.grid(column=3, row=3)



    def show_p1(self):   # EDIT3
        if not self.p1flag%2:
            self.p1.lift()
        else:
        self.p1.lower()
    self.p1flag+=1


if __name__ == "__main__":
    root = tk.Tk()
    main = MainPage(root)
    main.pack(side="top", fill="both", expand=True)
    root.wm_title('MobilePark Simulator')
    root.wm_geometry("1200x900")
    root.mainloop()  

相关问题 更多 >