维护策略.py
import tkinter as tk
import MenubarCommand as mbc
class Game(tk.Frame):
def __init__(self,parent):
tk.Frame.__init__(self,parent)
self.parnt=parent
# self.parnt.geometry('500x300')
self.parnt.title("Tic Tac Toe")
# self.pack()
menubar=tk.Menu(parent)
# 'settings' menu
settingsOption=tk.Menu(menubar, tearoff=0)
settingsOption.add_command(label='Player Settings', command=self.doit)
settingsOption.add_command(label='Board Settins', command=self.doit)
menubar.add_cascade(label='Setings', menu=settingsOption)
# without using this method, menubar isn't shown in Frame
self.parnt.config(menu=menubar)
def doit(self):
root=self.win()
set=mbc.playerSettings(root)
# print(set.p1name)
root.mainloop()
def win(self):
return tk.Tk()
def main():
root=tk.Tk()
Game(root)
root.mainloop()
main()
菜单命令.py
import tkinter as tk
class playerSettings(tk.Frame):
def __init__(self,parent=tk.Frame):
tk.Frame.__init__(self,parent)
self.parnt=parent
self.parnt.title("Player Setting")
self.p1name='Player 1'
self.p2name='Player 2'
self.p1symbol='x'
self.p2symbol='o'
# **********************************#
self.p1NameLabel = tk.Label(parent, text='Player 1: Name ')
self.p1NameLabel.grid(row=0, column=0)
self.p1NameEntry = tk.Entry(parent)
self.p1NameEntry.insert(0,self.p1name)
self.p1NameEntry.bind('<FocusIn>', lambda event:self.p1NameEntry.delete(0,'end'))
self.p1NameEntry.grid(row=0, column=1)
apply=tk.Button(parent, text="Apply Settings", fg='white', bg='gray', command=self.saveStat)
apply.grid(row=2, rowspan=1, columnspan=4)
def saveStat(self):
print('Settings Window Destroyed')
self.p1name=self.p1NameEntry.get()
print(self.p1name)
self.parnt.destroy()
我想将一个文件中某个实例的attribute值从另一个已经创建的文件中的另一个类的实例更改为另一个。
在MenubarComman.py文件中更改默认播放器名称时,我希望从MainTicTacToe.py类中访问更改后的名称。我该怎么做?
我是Python的新手
提前谢谢
你的问题源于Tk()的两个实例和草率的编程,即有时你使用parent,有时使用self.parnt,这是一个不好的习惯,所以一切都更改为self.top,这样如果这两个实例中的任何一个仍然存在,就会弹出一个错误。。当PlayerSetting()完成时,还必须有一种方法发出信号。就程序的结构而言,我所知的唯一方法就是使用递归检查“活动的”。您还可以让PlayerSettings在完成时调用Game()中的函数,该函数将打印值。我已经清理了你的代码,它的工作,我认为它应该。。请注意,这两个类位于同一个文件中,以便在此处进行测试和发布
相关问题 更多 >
编程相关推荐