Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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-如何在一个按钮中设置多个命令的优先级?_Python_Python 3.x_Tkinter - Fatal编程技术网

Python-如何在一个按钮中设置多个命令的优先级?

Python-如何在一个按钮中设置多个命令的优先级?,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我创建了一个按钮,将团队成员添加到列表中,我希望在用户输入用户名并单击“确认用户”按钮后,程序首先检查用户名是否已输入,然后将用户转移到新的框架中。我已经有一个功能来检查用户名的存在,并创建了下面的框架,这将出现在按下此按钮后。但我不知道如何正确地将它们分配给一个按钮 我的代码: (我现在关注的是class TeamsPage(ttk.Frame),confirbmtn) 从tkinter导入* 从tkinter导入消息框 将tkinter.ttk导入为ttk 班级集体实习(Tk): 定义初始化

我创建了一个按钮,将团队成员添加到列表中,我希望在用户输入用户名并单击“确认用户”按钮后,程序首先检查用户名是否已输入,然后将用户转移到新的框架中。我已经有一个功能来检查用户名的存在,并创建了下面的框架,这将出现在按下此按钮后。但我不知道如何正确地将它们分配给一个按钮

我的代码:

(我现在关注的是
class TeamsPage(ttk.Frame)
confirbmtn

从tkinter导入*
从tkinter导入消息框
将tkinter.ttk导入为ttk
班级集体实习(Tk):
定义初始化(自):
Tk.\uuuuuu初始(自我)
容器=ttk.帧(自身)
container.pack(side=“top”,fill=“both”,expand=True)
self.frames={}
对于F in(起始页面、选择页面、团队页面、个人页面、成功添加团队):
框架=F(容器,自身)
self.frames[F]=帧
frame.grid(行=0,列=0,sticky=“nsew”)
自显示帧(起始页)
def显示画面(自身,续):
帧=自身帧[续]
frame.tkraise()
类起始页(ttk帧):
定义初始化(自、父、控制器):
self.controller=控制器
ttk.Frame.\uuuuu init\uuuuuu(自,父)
self.startmenus()
def startMenu(自我):
heading=标签(self,text=“大学锦标赛积分\n计数软件”,
字体=('Arial',25))
heading.grid(行=0,列=0,列span=2,padx=240,pady=40)
开始按钮(self,text=“开始”,font=“Arial 16”,宽度=8,
command=lambda:self.controller.show_frame(selectionPage))
开始网格(行=1,列=0,padx=30,pady=5)
退出按钮(self,text=“退出”,font=“Arial 16”,宽度=8,
command=self.controller.destroy)
出口网格(行=1,列=1,padx=30,pady=5)
def启动_程序(自):
通过
类别选择页面(ttk.Frame):
定义初始化(自、父、控制器):
self.controller=控制器
ttk.Frame.\uuuuu init\uuuuuu(自,父)
self.teamOrIndiv()
def teamOrIndiv(自我):
heading=标签(self,text=“从两个选项中选择一个”,
字体=('Arial',25))
heading.grid(行=0,列=0,列span=2,padx=250,pady=40)
团队=按钮(self,text=“teams”,font=“Arial 24”,宽度=15,
command=lambda:self.controller.show_frame(TeamsPage))
网格(行=1,列=0,padx=270,pady=5)
Individid=按钮(self,text=“Persons”,font=“Arial 24”,width=15,
command=lambda:self.controller.show_frame(个人页面))
独立网格(行=2,列=0,padx=270,pady=0)
类团队空间(ttk.Frame):
定义初始化(自、父、控制器):
self.controller=控制器
ttk.Frame.\uuuuu init\uuuuuu(自,父)
self.userEntry()
def userEntry(自我):
headingTest=标签(self,text=“输入用户名:”,font=“Arial 20”)
headingTest.grid(行=0,列=0,pady=0)
self.usernameinter=Entry(self,宽度=40)
self.usernamenter.grid(行=0,列=1,padx=2,pady=10)
self.TeamName=StringVar(self)
self.TeamName.set(“Team1”)
AdditionalText=标签(self,text=“请选择团队:”,font=“Arial 18”)
AdditionalText.grid(行=1,列=0,粘滞=W,pady=15)
self.team_name=列表(teams.keys())[:-1]
self.teamSelection=选项菜单(self、self.TeamName、*self.team\u名称)
self.teamSelection.grid(行=1,列=1,粘性=W)
confirmBtn=按钮(self,text=“确认用户”,font=“Arial 16”,
command=lambda:[self.add\u to\u team,self.controller.show\u frame(successfullAddTeam)])
confirBMTN.config(高度=4,宽度=12)
确认网格(行=2,列=2,粘性=E,padx=65,pady=300)
def添加到团队(自我):
user=self.usernamenter.get()
如果len(用户)==0:
messagebox.showwarning(title='No user',message='请输入用户名!')
返回
team_name=self.TeamName.get()
团队=团队[团队名称]
如果用户在团队中:
showwarning(title='In team',message=f'{user}已经是{team_name}的成员)
如果len(团队)=5且len(团队[“个人])<20:
resp=messagebox.askyesno(title='Team full',
message=f“在{team_name}中没有更多的空格!\n是否要加入单个团队?”)
打印(resp)
如果分别:
团队=团队[“个人”]
其他:
返回
添加团队(用户)
打印(团队)
类别个性化页面(ttk.Frame):
定义初始化(自、父、控制器):
self.controller=控制器
ttk.Frame.\uuuuu init\uuuuuu(自,父)
self.userEntry()
def userEntry(自我):
usernamenter=Entry(self,text=“输入用户名:”,宽度=30)
usernamenter.grid(行=0,列=0)
类successfullAddTeam(ttk.Frame):
定义初始化(自、父、控制器):
self.controller=控制器
ttk.Frame.\uuuuu init\uuuuuu(自,父)
self.userEntry()
def userEntry(自我):
successText=Label(self,text=“您已成功加入团队!”,
font=“Arial 25”)
网格(行=0,列=0,列span=2,padx=180,pady=35)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
团队={}
对于范围(1,5)内的团队:
teams[f'Team{Team}']=set()
团队['Individual']=集合()
app=CollegeApp()
附录几何(“800x500”)
应用标题(“积分计数器”)
app.mainloop()
我试着使用这样的方法:
self.testButton=Button(self,text=“test”,command=lambda:[funct1(),funct2()])
,但在
from tkinter import *
from tkinter import messagebox
import tkinter.ttk as ttk


class CollegeApp(Tk):
    def __init__(self):
        Tk.__init__(self)
        container = ttk.Frame(self)
        container.pack(side="top", fill="both", expand=True)
        self.frames = {}
        for F in (StartPage, selectionPage, TeamsPage, IndividPage, successfullAddTeam):
            frame = F(container, self)
            self.frames[F] = frame
            frame.grid(row=0, column=0, sticky="nsew")
        self.show_frame(StartPage)

    def show_frame(self, cont):
        frame = self.frames[cont]
        frame.tkraise()


class StartPage(ttk.Frame):
    def __init__(self, parent, controller):
        self.controller = controller
        ttk.Frame.__init__(self, parent)
        self.startMenu()

    def startMenu(self):
        heading = Label(self, text="College Tournament Points\n Count Software",
                        font=('Arial', 25))
        heading.grid(row=0, column=0, columnspan=2, padx=240, pady=40)

        start_Btn = Button(self, text="Start", font="Arial 16", width=8,
                           command=lambda: self.controller.show_frame(selectionPage))
        start_Btn.grid(row=1, column=0, padx=30, pady=5)

        exit_Btn = Button(self, text="EXIT", font="Arial 16", width=8,
                          command=self.controller.destroy)
        exit_Btn.grid(row=1, column=1, padx=30, pady=5)

    def starting_Program(self):
        pass


class selectionPage(ttk.Frame):
    def __init__(self, parent, controller):
        self.controller = controller
        ttk.Frame.__init__(self, parent)
        self.teamOrIndiv()

    def teamOrIndiv(self):
        heading = Label(self, text="Select one of two options",
                        font=('Arial', 25))
        heading.grid(row=0, column=0, columnspan=2, padx=250, pady=40)

        teams = Button(self, text="Teams", font="Arial 24", width=15,
                       command=lambda: self.controller.show_frame(TeamsPage))
        teams.grid(row=1, column=0, padx=270, pady=5)

        individ = Button(self, text="Individuals", font="Arial 24", width=15,
                         command=lambda: self.controller.show_frame(IndividPage))
        individ.grid(row=2, column=0, padx=270, pady=0)


class TeamsPage(ttk.Frame):

    def __init__(self, parent, controller):
        self.controller = controller
        ttk.Frame.__init__(self, parent)
        self.userEntry()

    def userEntry(self):
        headingTest = Label(self, text="Enter your UserName:", font="Arial 20")
        headingTest.grid(row=0, column=0, pady=0)

        self.usernameEnter = Entry(self, width=40)
        self.usernameEnter.grid(row=0, column=1, padx=2, pady=10)

        self.TeamName = StringVar(self)
        self.TeamName.set("Team1")

        AdditionalText = Label(self, text="Please select a team:", font="Arial 18")
        AdditionalText.grid(row=1, column=0, sticky=W, pady=15)
        self.team_names = list(teams.keys())[:-1]
        self.teamSelection = OptionMenu(self, self.TeamName, *self.team_names)
        self.teamSelection.grid(row=1, column=1, sticky=W)

        confirmBtn = Button(self, text="Confirm User", font="Arial 16",
                            command=lambda: [self.add_to_team, self.controller.show_frame(successfullAddTeam)])
        confirmBtn.config(height=4, width=12)
        confirmBtn.grid(row=2, column=2, sticky=E, padx=65, pady=300)

    def add_to_team(self):
        user = self.usernameEnter.get()
        if len(user) == 0:
            messagebox.showwarning(title='No user', message='Please enter a username!')
            return

        team_name = self.TeamName.get()
        team = teams[team_name]

        if user in team:
            messagebox.showwarning(title='In team', message=f'{user} is already a member of {team_name}!')
        if len(team) == 5 and len(teams['Individual']) < 20:
            resp = messagebox.askyesno(title='Team full',
                                       message=f'There are no more spaces in {team_name}!\nDo you want to join the Individual team?')
            print(resp)
            if resp:
                team = teams['Individual']
            else:
                return
        team.add(user)
        print(teams)


class IndividPage(ttk.Frame):
    def __init__(self, parent, controller):
        self.controller = controller
        ttk.Frame.__init__(self, parent)
        self.userEntry()

    def userEntry(self):
        usernameEnter = Entry(self, text="Enter your UserName: ", width=30)
        usernameEnter.grid(row=0, column=0)


class successfullAddTeam(ttk.Frame):
    def __init__(self, parent, controller):
        self.controller = controller
        ttk.Frame.__init__(self, parent)
        self.userEntry()

    def userEntry(self):
        successText = Label(self, text="You have successfully joined to a team!",
                            font="Arial 25")
        successText.grid(row=0, column=0, columnspan=2, padx=180, pady=35)


if __name__ == '__main__':
    teams = {}
    for team in range(1, 5):
        teams[f'Team{team}'] = set()
    teams['Individual'] = set()
    app = CollegeApp()
    app.geometry("800x500")
    app.title('Points Counter')
    app.mainloop()

class TeamsPage(ttk.Frame):
    ...
    def userEntry(self):
        ...
        confirmBtn = Button(..., command=self.confirm)
        ...

    def confirm(self):
        if self.add_to_team():
            self.controller.show_frame(successfullAddTeam)

    def add_to_team(self):
        ...
        if <add was successful>:
            return True
        else
            return False