我有一個(gè)用IDLE3.3和tkinter編寫的程序,我不知道將mainloop()放在哪里。該程序?qū)?chuàng)建一個(gè)系統(tǒng)托盤圖標(biāo),如果您在上下文菜單中單擊“新筆記”,該圖標(biāo)會(huì)創(chuàng)建一個(gè)小筆記。注意的末尾是否有“ self.root.mainloop()”行。init(),則顯示注釋,但僅顯示一個(gè)注釋。如果我創(chuàng)建第二個(gè)音符,則第一個(gè)音符已死,并且沒有任何其他反應(yīng)。但是,如果我沒有在初始化方法中調(diào)用mainloop(),我會(huì)看到創(chuàng)建了一些注釋,因?yàn)樗淮蛴≡谕鈿ぶ?。所以問題是,我應(yīng)該將mainloop放在哪里,以便每個(gè)新創(chuàng)建的notw都能顯示并正常工作?很抱歉這個(gè)可能很愚蠢的問題,但我不知道。from tkinter import *import sysfrom PyQt4.QtGui import *import threadingclass Note():
yellow=["#e7e37c","#d9d574"]
def __init__(self,noteset=None, properties=None):
self.root=Tk()
self.noteset=noteset
self.properties=properties
self.screen_width = self.root.winfo_screenwidth()
self.screen_height = self.root.winfo_screenheight()
print("No initial properties to load => creating new note")
self.notecolor=self.yellow[0]
self.gripcolor=self.yellow[1]
self.root.overrideredirect(1)
self.text=""
self.font="arial"
self.fontsize=10
self.sizeX=250
self.sizeY=200
self.posX=int(self.screen_width/2 - self.sizeX/2)
self.posY=int(self.screen_height/2 - self.sizeY/2)
self.root.wm_geometry("%sx%s+%s+%s" %(self.sizeX, self.sizeY, self.posX, self.posY) )
self.root.wm_attributes("-topmost",1)
self.GUI()
self.bindings()
self.root.mainloop()
def bindings(self):
self.frmGRIP.bind("<ButtonPress-1>", self.StartMove)
self.frmGRIP.bind("<ButtonRelease-1>", self.StopMove)
self.frmGRIP.bind("<B1-Motion>", self.OnMotion)
def StartMove(self, event):
self.startx = event.x
self.starty = event.y
def OnMotion(self, event):
mousex,mousey=self.root.winfo_pointerxy()
self.root.geometry("+%s+%s" % (mousex-self.startx, mousey-self.starty)) def StopMove(self, event):
self.posX = self.root.winfo_x()
self.posY = self.root.winfo_y()
2 回答

紫衣仙女
TA貢獻(xiàn)1839條經(jīng)驗(yàn) 獲得超15個(gè)贊
在每個(gè)mainloop相互阻塞時(shí),混合使用gui框架不是一個(gè)好主意,因此最好在一個(gè)或另一個(gè)中編寫整個(gè)代碼。
添加回答
舉報(bào)
0/150
提交
取消