我正在为我的桌面应用程序尝试以下设计:
在applications.

我在网格设计中尝试了下面的代码,并尝试根据各个教程中描述的网格细节来调整它,但是没有得到设计。
from tkinter import *
from tkinter import ttk
from ttkthemes import themed_tk as tk
root = tk.ThemedTk()
width_value = root.winfo_screenwidth()
height_value = root.winfo_screenheight()
root.geometry(f"{width_value}x{height_value}+0+0")
root.resizable(True, True)
root.grid_columnconfigure(0,weight=1)
root.grid_rowconfigure(0,weight=1)
root.title("xyz")
root.iconbitmap(r'icon.ico')
#root.configure(background="LightBlue")
TopFrame = Frame(root,relief='solid',bg="Blue")
TopFrame.grid(row=0,column=0,sticky=N+W)
leftframe = Frame(root,relief='solid',bd=2,bg="Green")
leftframe.grid(row=1,column=0,padx=10, pady=10,sticky= W)
rightframe = Frame(root,relief='solid',bd=2,bg="RED")
rightframe.grid(row=0,column=1,padx=10, pady=10,sticky=E)
ddBtn = ttk.Button(TopFrame,text="Button1")
ddBtn.grid(row=0,column=0,sticky=N+W+E)
ddBtn1 = ttk.Button(TopFrame, text="Button2")
ddBtn1.grid(row=0,column=1,sticky=N+W+E)
root.mainloop()发布于 2021-06-27 09:27:22
你有基本的想法。向左框和右框添加一些宽度和高度参数,这样它们才能实际填充空间。然后定义一些显示&隐藏按钮的回调。调整衬垫和放置。
#! /usr/bin/env python3
## pip3 install ttkthemes
from tkinter import *
from tkinter import ttk
from ttkthemes import themed_tk as tk
root = tk .ThemedTk()
## define all your root stuff before trying to add widgets to it
Width = root .winfo_screenwidth()
Height = root .winfo_screenheight()
root .geometry( f'{Width}x{Height}' )
root .resizable( True, True )
root .grid_columnconfigure( 0, weight=1 )
root .grid_rowconfigure( 0, weight=1 )
root .title( 'xyz' )
## root .iconbitmap( r'icon .ico' ) don't happen to have this installed here
root .configure( background='LightBlue' )
# Create the menubar
menubar = Menu( root )
root .config( menu=menubar )
statusbar = ttk .Label( root, text='Status Bar', width=130, relief=SUNKEN, font='Times 10 italic' )
statusbar .grid( row=10, column=0, columnspan=4 )
def popupmsg( msg ):
popup = tk .Tk()
popup .wm_title( '!' )
label = tk .Label( popup, text=msg )
label .grid( row=5, column=7, pady=10 )
popup .mainloop()
# Create the submenu
fileMenu = Menu( menubar, tearoff=0 )
fileMenu .add_command( label='New File', command= lambda : popupmsg( 'New file' ) )
fileMenu .add_command( label='Open File', command= lambda : popupmsg( 'Open File' ) )
fileMenu .add_command( label='Open Folder', command= lambda : popupmsg( 'Open folder' ) )
fileMenu .add_separator()
fileMenu .add_command( label='Save', command= lambda : popupmsg( 'Save' ) )
fileMenu .add_command( label='Save As', command= lambda : popupmsg( 'Save As' ) )
fileMenu .add_separator()
fileMenu .add_command( label='Exit', command= quit )
menubar .add_cascade( label='File', menu=fileMenu )
# Edit menu
Editmenu = Menu( menubar, tearoff=0 )
Editmenu .add_command( label='Undo', command= lambda : popupmsg( 'Undo' ) )
Editmenu .add_command( label='Redo', command= lambda : popupmsg( 'Redo' ) )
Editmenu .add_separator()
Editmenu .add_command( label='Cut', command= lambda : popupmsg( 'Open folder' ) )
Editmenu .add_command( label='Copy', command= lambda : popupmsg( 'Open folder' ) )
Editmenu .add_command( label='Paste', command= lambda : popupmsg( 'Open folder' ) )
menubar .add_cascade( label='Edit', menu=Editmenu )
# View Menu
ViewMenu = Menu( menubar, tearoff=0 )
ViewMenu .add_command( label='Explorer', command= lambda : popupmsg( 'Explorer' ) )
menubar .add_cascade( label='View', menu=ViewMenu )
# Run Menu
RunMenu = Menu( menubar, tearoff=0 )
RunMenu .add_command( label='Compile', command= lambda : popupmsg( 'Comppile' ) )
RunMenu .add_command( label='Build', command= lambda : popupmsg( 'Build' ) )
menubar .add_cascade( label='Run', menu=RunMenu )
# Help Menu
HelpMenu = Menu( menubar, tearoff=0 )
menubar .add_cascade( label='Help', menu=HelpMenu )
TopFrame = Frame( root, relief='solid', bg='Blue' )
TopFrame .grid( row=0, column=0, columnspan=4, sticky='n' )
leftframe = Frame( root, width=Width *0.95, height=Height*0.75, relief='solid', bd=2, bg='Green' )
rightframe = Frame( root, width=Width *0.95, height=Height*0.75, relief='solid', bd=2, bg='Red' )
def call1():
leftframe .grid( row=1, column=0, rowspan=9, columnspan=3, padx=5, pady=5, sticky='w' )
rightframe .grid_forget()
def call2():
rightframe .grid( row=1, column=1, rowspan=9, columnspan=3, padx=5, pady=5, sticky='e' )
leftframe .grid_forget()
ddBtn1 = ttk .Button( TopFrame, text='Button1', command=call1 )
ddBtn1 .grid( row=0, column=1, sticky='nw' )
ddBtn2 = ttk .Button( TopFrame, text='Button2', command=call2 )
ddBtn2 .grid( row=0, column=4, sticky='ne' )
root .mainloop()发布于 2021-07-06 04:54:23
Tkinter有一个内置的方法。此方法在页面顶部添加一个制表符,并通过选择不同的选项卡在帧之间切换。
import tkinter as tk
from tkinter import ttk
if __name__ == "__main__":
root = tk.Tk()
tabControl = ttk.Notebook(root)
tabControl.grid(row=0,column=0,sticky="nsew")
# make frame
leftFrame = tk.Frame(tabControl,width=300,height=300)
# add to tab controll
tabControl.add(leftFrame, text="Frame 1")
# add seccond frame
rightFrame = tk.Frame(tabControl,width=300,height=300)
tabControl.add(rightFrame, text="Frame 2")
root.mainloop()

https://stackoverflow.com/questions/68149287
复制相似问题