首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tkinter格式窗口布局

Tkinter格式窗口布局
EN

Stack Overflow用户
提问于 2017-05-04 06:01:29
回答 2查看 1.5K关注 0票数 0

到目前为止,我的代码如下:

代码语言:javascript
复制
from tkinter import *
from tkinter import ttk

#create root window
root = Tk()
root.geometry('640x480+25+75')
root.title('Dragon Slayer')

#create Main  frame
frame = ttk.Frame(root)
frame.grid(sticky= N+W+E+S)
frame.config(height = 480, width = 640)
frame.config(relief = SUNKEN)

#create Left Controls frame
frame_controls = ttk.Frame(frame)
frame_controls.grid(row = 1, column = 1, sticky="nesw")
frame_controls.config(height = 480, width = 125)
frame_controls.config(relief = SUNKEN)
label = ttk.Label(frame_controls)
label.grid(row = 1)
label.config(relief = SUNKEN)
look_button = ttk.Button(label, text = "Look")
look_button.grid(row = 1, column = 1)
look_button.config()

#Create Game Frames 
frame_game = ttk.Frame(frame)
frame_game.grid(row = 1, column = 2, sticky="nesw")
frame_game.config(height = 480, width = 640)
frame_game.config(relief = SUNKEN)

我想要三帧:

  • 一个是右上角的位置信息,
  • 其中一个是右下角的行动,
  • 一个为控制按钮左填充自上而下。

我接下来尝试的每一件事似乎都破坏了我到目前为止的格式。

EN

回答 2

Stack Overflow用户

发布于 2017-05-06 13:33:38

如果希望左侧帧填充多行,请使用rowspan。这里是如何做到这一点,我把一个Canvas在每一帧与一个背景颜色,以便你可以看到他们的位置。这里的主要问题是,我使用了rowspan = 2作为左帧,以跨越2行。您应该移除画布,并将小部件放置在适当的框架中。

代码语言:javascript
复制
from tkinter import *
from tkinter import ttk

#create root window
root = Tk()
root.geometry('640x480+25+75')
root.title('Dragon Slayer')

#create Main  frame
frame = ttk.Frame(root)
frame.grid(sticky= N+W+E+S)
frame.config(height = 480, width = 640)
frame.config(relief = SUNKEN)

#create Left Controls frame
frame_controls = ttk.Frame(frame)
frame_controls.grid(row = 0, column = 0, rowspan = 2, sticky="nesw")
frame_controls.config(height = 480, width = 125)
frame_controls.config(relief = SUNKEN)
can_l = Canvas(frame_controls, height = 480, width = 215, bg="green")
can_l.grid()

#Location Information Frames (top right)
frame_loc = ttk.Frame(frame)
frame_loc.grid(row = 0, column = 1, sticky="nesw")
frame_loc.config(height = 180, width = 515)
frame_loc.config(relief = SUNKEN)
can_tr = Canvas(frame_loc, height = 180, width = 515, bg="red")
can_tr.grid()

#Create Game Frames (bottom right)
frame_game = ttk.Frame(frame)
frame_game.grid(row = 1, column = 1, sticky="nesw")
frame_game.config(height = 480, width = 640)
frame_game.config(relief = SUNKEN)
can_br = Canvas(frame_game, height = 300, width = 515, bg="blue")
can_br.grid()

如果您想在调整窗口大小时展开框架,那么请考虑使用grid_rowconfiguregrid_columnconfigure

这些员额可能有助于:

Using row and column weights

Second related link

票数 0
EN

Stack Overflow用户

发布于 2017-05-08 00:36:27

由于我问了这个问题,我做了足够的研究来自己回答它,至少暂时一个相当不错的答案。我将在最后的格式中发布我使用的代码。

代码语言:javascript
复制
from tkinter import *
from tkinter import ttk

#create root window
root = Tk()
root.geometry('640x480+25+75')
root.title('Dragon Slayer')
root.resizable(0,0)

#create Main  frame
frame = ttk.Frame(root)
frame.grid(sticky= N+W+E+S)
frame.config(height = 480, width = 640)
frame.config(relief = SUNKEN)

#create Left Controls frame
frame_controls = Canvas(frame)
frame_controls.pack(side = 'left')
frame_controls.config(height = 480, width = 125)
frame_controls.config(relief = SUNKEN)
frame_controls.propagate(False)
frame_controls_image = PhotoImage(file = "C:\\Users\\Garry\\Desktop\\Project\\parchment_left_small.gif") 
label = ttk.Label(frame_controls)
label.config(image = frame_controls_image)
label.pack()
label.config(relief = SUNKEN)

#Create Control buttons
create_button = ttk.Button(label, text = "New Player")
create_button.place(x =23, y =15)
monastary_button = ttk.Button(label, state = 'disabled', text = "Monastary")
monastary_button.place(x =23, y =55)
fields_button = ttk.Button(label, state = 'disabled', text = "Fields")
fields_button.place(x =23, y =95)
item_shop_button = ttk.Button(label, state = 'disabled', text = "Item shop")
item_shop_button.place(x =23, y =135)
kill_button = ttk.Button(label, state = 'disabled', text = "Kill Player")
kill_button.place(x =23, y =175)

#Create Game Frames
frame_location_image = PhotoImage(file = "C:\\Users\\Garry\\Desktop\\Project\\parchment_top.gif")
frame_location = Canvas(frame)
frame_location.pack(side = 'top')
frame_location.config(height = 240, width = 515)
frame_location.config(relief = SUNKEN)
frame_location_label = ttk.Label(frame_location)
frame_location_label.config(image = frame_location_image)
frame_location_label.place(x=0,y=0)
frame_location_label.config(compound = 'center')

#create action frames
frame_action_image = PhotoImage(file = "C:\\Users\\Garry\\Desktop\\Project\\parchment_bottom.gif") 
frame_action = Canvas(frame)
frame_action.pack(side = 'bottom')
frame_action.config(height = 240, width = 515)
frame_action.config(relief = SUNKEN)
frame_action_label = ttk.Label(frame_action, text = "Action")
frame_action_label.config(image = frame_action_image)
frame_action_label.place(x=0,y=0)
frame_action_label.config(compound = 'center')

#create stats window
stats_window = Toplevel(root)
stats_window.state('withdrawn')
stats_window.title('Stats')
stats_window.geometry('200x480+680+75')
stats_window.resizable(True, True)
frame_stats_background = PhotoImage(file = "C:\\Users\\Garry\\Desktop\\Project\\parchment_stats.gif")
frame_stats_window = Canvas(stats_window)
frame_stats_window.place(x=0, y=0)
frame_stats_window.config(height = 480, width = 200)
frame_stats_window.config(relief = SUNKEN)
stats_file = open('C:\\Users\\Garry\\Desktop\\Project\\stats.txt', 'r')
stats = stats_file.read()
frame_stats_label = ttk.Label(frame_stats_window,text = stats)
frame_stats_label.config(image = frame_stats_background, compound ='center')
frame_stats_label.pack(side = 'left')
frame_stats_label.config(font = "Helvetica 16 bold")

#create monster stats window
monster_stats_window = Toplevel(root)
monster_stats_window.state('withdrawn')
monster_stats_window.title('Monster Stats')
monster_stats_window.geometry('200x480+900+75')
monster_stats_window.resizable(True, True)
monster_frame_stats_window = Canvas(monster_stats_window)
monster_frame_stats_window.place(x=0, y=0)
monster_frame_stats_window.config(height = 480, width = 200)
monster_frame_stats_window.config(relief = SUNKEN)
monster_stats_file = open('C:\\Users\\Garry\\Desktop\\Project\\monsterstats.txt', 'r')
monster_stats = monster_stats_file.read()
monster_frame_stats_label = ttk.Label(monster_frame_stats_window,text = monster_stats)
monster_frame_stats_label.config(image = frame_stats_background, compound ='center')
monster_frame_stats_label.pack(side = 'left')
monster_frame_stats_label.config(font = "Helvetica 16 bold")

#buttons
kill_monster_button = ttk.Button(label, text = "Kill Monster")
fight_button = ttk.Button(frame_action_label, text = "Fight")
run_button = ttk.Button(frame_action_label, text = "Run!")
look_button = ttk.Button(frame_action_label, text = "Look")
leave_fields_button = ttk.Button(frame_action_label, text = "Leave")
leave_item_shop_button = ttk.Button(frame_action_label, text = "Leave")
heal_button = ttk.Button(frame_action_label, text = "Heal")
revive_button = ttk.Button(frame_action_label, text = "Revive")

I hope this helps someone else to find the answers they need.  good luck to all
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43774986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档