首页 > 解决方案 > 我可以使用 tkinter 为单个页面创建 2 个模块吗?

问题描述

我想使用 Tkinter 制作一个页面,而且我想在 2 个模块中制作它。在这种情况下,我可以简化代码

我所做的代码是

模块 1 (a1.py)

from tkinter import *
from a2 import frame


root=Tk()
root.title("voccabulary journel")
root.geometry("700x450")
root.configure(bg='#ff8000')


frame()



root.mainloop()

模块 2 (a2.py)

from tkinter import *



def frame():
    Grid.rowconfigure(root,0,weight=1)
    Grid.columnconfigure(root,0,weight=1)
    Grid.columnconfigure(root,1,weight=3)

    frame1=Frame(root,background='black')
    frame1.grid(row=0,column=0,sticky='nsew')

    frame2=Frame(root,background='white')
    frame2.grid(row=0,column=1,sticky='nsew')

    labeltry1=Label(frame1, text='testing')
    labeltry1.pack()

    labeltry2=Label(frame2,text='tersting')
    labeltry2.pack()

我本可以在一个模块中编写,但我只想简化它..

无论如何我都会附上终端的图像

在此处输入图像描述

标签: pythonpython-3.xtkintersoftware-designtkinter-canvas

解决方案


有一个很好的规则:将所有值显式作为参数发送。

这是您的问题 - 在frame()您使用root未作为参数发送的情况下。

采用:

a2.py

def frame(root):
    # code

a1.py

frame(root)

这解决了您的问题,并使代码更具可读性和更易于调试。


推荐阅读