簡體   English   中英

在 Tkinter GUI class 中調用 Ptoaster function

[英]Calling a Ptoaster function within a Tkinter GUI class

問題

我正在使用Tkinter開發 Python GUI 我還嘗試使用Ptoaster添加“toaster”消息。 這是我要實現的目標的示例:

from tkinter import *
import ptoaster

PADDING = 20

class MyInterface:
    def __init__(self):
        self.root = Tk()
        self.label = self.make_label()
        print_welcome()

    def make_label(self):
        result = Label(self.root, text="Hello, world!")
        result.pack(padx=PADDING, pady=PADDING)
        return result

    def run_me(self):
        self.root.mainloop()

def print_welcome():
    message = "Hello again!"
    ptoaster.notify("Hello!", message)

interface = MyInterface()
interface.run_me()

如果我嘗試運行上面的代碼,將會發生以下兩種情況之一:

  1. 命令行將吐出以下錯誤:
[xcb] Unknown sequence number while processing queue
[xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
[xcb] Aborting, sorry about that.
python3: ../../src/xcb_io.c:260: poll_for_event: Assertion `!xcb_xlib_threads_sequence_lost' failed.
XIO:  fatal IO error 25 (Inappropriate ioctl for device) on X server ":0"
      after 207 requests (207 known processed) with 2 events remaining.
Aborted (core dumped)
  1. 我的整個筆記本電腦都會死機,需要進行硬重置。

但是,如果我從 MyInterface 外部移動調用print_welcome() ,以便在初始化此 class 之前調用它,則不會出現上述錯誤。

我想知道什么

  1. 如何從 Tkinter GUI class 調用 function,這會導致顯示“烤面包機”消息,而不會導致整個平台崩潰。
  2. 為什么會出現上述錯誤。

文檔指出需要驗證ptoaster.notify是從主程序調用的。

重要 - 您需要確保從主程序調用通知

我的工作代碼:

from tkinter import *
import ptoaster

PADDING = 20

class MyInterface:
    def __init__(self):
        self.root = Tk()
        self.label = self.make_label()
        print_welcome()

    def make_label(self):
        result = Label(self.root, text="Hello, world!")
        result.pack(padx=PADDING, pady=PADDING)
        return result

    def run_me(self):
        self.root.mainloop()

def print_welcome():
    message = "Hello again!"
    ptoaster.notify("Hello!", message)

if __name__ == '__main__':
    interface = MyInterface()
    interface.run_me()

文檔(參見:示例程序)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM