Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter:并排为两帧辩护_Python_Python 3.x_User Interface_Tkinter - Fatal编程技术网

Python Tkinter:并排为两帧辩护

Python Tkinter:并排为两帧辩护,python,python-3.x,user-interface,tkinter,Python,Python 3.x,User Interface,Tkinter,作为UNI项目的一部分,我正在编写一个小游戏,到目前为止,我已经编写了以下代码: import tkinter as tk from tkinter import * from tkinter import messagebox import random root = Tk() linear_array = [i for i in range(1,26)] random_array = [] removed_numbers=[] number_to_send = None num_to_re

作为UNI项目的一部分,我正在编写一个小游戏,到目前为止,我已经编写了以下代码:

import tkinter as tk
from tkinter import *
from tkinter import messagebox
import random

root = Tk()
linear_array = [i for i in range(1,26)]
random_array = []
removed_numbers=[]
number_to_send = None
num_to_recv = None

#Creating Frames
frame1 = Frame(root)
frame1.pack(side=TOP,fill=X)

frame2 = Frame(root)
frame2.pack(side=TOP,fill=X,padx=10,pady=10)

frame3 = Frame(root)
frame3.pack(side=TOP,fill=X,pady=5)

#Button click function
def numberClick(num,btn):
    global number_to_send
    #messagebox.showinfo('Message',str(num)+' is removed')
    number_to_send = num
    removed_numbers.append(num)
    btn.configure(text='X')
    btn.configure(bg='red',fg='white')
    btn.configure(state="disabled")
    print(removed_numbers)
    stmnt = str(num)+" was removed!!"
    textBox.delete('1.0', END)
    textBox.insert(END,stmnt)
    textBox.tag_add("center", 1.0, "end")

#Generating linear array and a random array from the linear array
for i in range(1,26):
    temp = random.choice(linear_array)
    linear_array.remove(temp)
    random_array.append(temp) 

#Generating Title bar
title = Label(frame1,text='B . I . N . G . O !!!',fg='red',bg='yellow')
title.config(font=("Courier", 30))
title.pack(side=TOP,fill=X)

#Generating a 5x5 Button matrix
rows=5
columns=5
btns = [[None for i in range(rows)] for j in range(columns)]
button_mapping = {}
for i in range(rows):
    for j in range(columns):
        num = random.choice(random_array)
        random_array.remove(num)
        btns[i][j]=Button(frame2, text = num , fg ='red',height = 3, width = 5)
        btns[i][j]['command']=lambda btn=btns[i][j],num=num: numberClick(num,btn)
        btns[i][j]['borderwidth'] = 2
        btns[i][j]['relief'] = "groove"
        btns[i][j].grid(row=i,column=j)
        button_mapping[num]=btns[i][j]

#Printing numbers which are deleted 
textBox = Text(frame3, height = 1, width = 28)
textBox.tag_configure("center", justify='center')
textBox.insert("1.0","Recently Deleted Number")
textBox.tag_add("center", 1.0, "end")
textBox.pack(side=TOP)
   
root.mainloop()
输出如图所示:

现在我想再添加两个帧,如下所示:


我该怎么做呢?我尝试了一帧接一帧,还将第2帧向左对齐,第4帧向右对齐,但没有成功。请帮忙。蒂亚

您可以尝试使用网格。如果这不起作用,请发表评论,我将删除答案,我只是没有足够高的代表性来发表评论。

您可以创建一个框架,例如
frame
,以容纳两个框架(
frame4
frame5
),然后为
frame2
设置
side=LEFT
,为
frame
设置
side=RIGHT
。但您需要更改包装框架的顺序,如下所示:

#创建帧
frame1=帧(根)
框架1.包装(侧面=顶部,填充=X)
frame3=帧(根)
框架3.包装(侧面=底部,填充=X,pady=5)
frame2=帧(根)
框架2.包装(侧面=左侧,填充=Y,padx=10,pady=10)
帧=帧(根)#帧4和帧5的父级
frame.pack(side=RIGHT,fill=BOTH,expand=True,padx=10,pady=10)
#使frame4和frame5使用所有空间
frame.grid\u columnconfigure(0,权重=1)
frame.grid_rowconfigure(0,权重=1)
frame.grid_rowconfigure(1,权重=1)
然后您可以在
frame
内部创建
frame4
frame5
,如下所示:

frame4=Frame(Frame,bd=1,relief='solid')
frame4.网格(sticky='nsew',padx=5,pady=5)
帧4=帧(帧,bd=1,relief='solid')
frame4.网格(sticky='nsew',padx=5,pady=5)
以及输出: