日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

点击button时候传递一个参数实现局部刷星_Tkinter的一个小小的规则,如果不了解,可能不会解决掉这个问题...

發布時間:2024/9/15 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 点击button时候传递一个参数实现局部刷星_Tkinter的一个小小的规则,如果不了解,可能不会解决掉这个问题... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如何控制變量在Tkinter中的使用?這節課木辛老師來給大家說道說道。

請點擊右上角“關注”按鈕關注我們喲:跟著木辛老師學習Python編程知識,變身快樂的編程達人吧~

大家好,木辛老師又來了!

上節課咱們初次見到Tkinter制作的窗口,并且增加了簡單的事件交互。

新朋友第一次見面是不是非常開心。希望通過木辛老師的Tkinter編程課堂,可以讓大家和Tkinter成為非常好的朋友。

這節課咱們再來進一步認識一下Tkinter。

上一個例子還是太簡單了,我們不禁在想,能不能做得好玩一點,通過某些動作,修改一下窗口上顯示的內容?

答案是肯定的,通過Tkinter非常簡單就可以實現這個功能。

好!上代碼。

import tkinter as tkclass Window(tk.Tk):????def __init__(self):????????super().__init__()????????self.title("Hello")????????self.label_text = "choose"????????self.label = tk.Label(self, text=self.label_text)????????self.label.pack(fill=tk.BOTH, expand=1, padx=100, pady=30)????????hello_button = tk.Button(self, text="Say Hello", command=self.say_hello)????????hello_button.pack(side=tk.LEFT, padx=(20, 0), pady=(0, 20))????????goodbye_button = tk.Button(self, text="Say GoodBye", command=self.say_goodbye)????????goodbye_button.pack(side=tk.RIGHT, padx=(0, 20), pady=(0, 20))????def say_hello(self):????????self.label_text = "welcome"????def say_goodbye(self):????????self.label_text = "Goodbye! (Closing in 2 seconds)"????????self.after(2000, self.destroy)if __name__ == "__main__":????window = Window()????window.mainloop()

執行程序,效果圖就像這樣

然后,我狂點say按鈕,發現并沒有什么反應。這是為什么呢?明明已經設置內容了呀?

咱們來看下代碼

def say_hello(self):????????self.label_text = "welcome"

上節課,木辛老師講過,將變量和Label控件關聯起來,如果變量的內容會反映到控件上。

為什么在這里更改文本不起作用呢?而點擊good_bye_button卻可以執行關閉窗口的操作。

def say_goodbye(self):????????self.label_text = "Goodbye! (Closing in 2 seconds)"????????self.after(2000, self.destroy)

通過分析,可以看出來,其實代碼邏輯是執行了,但是”跳過了“設置文本這一行。

這貌似不太正常!

其實呀,這里代碼編寫的有一點點不對。

哪里的問題呢?

之所以變量的值沒有更新,是因為在Tkinter中,更新變量的值,我們需要使用Tkinter自己”認可“的方式。

需要按照Tkinter自己的格式定義。

比如:

  • (1)使用字符串類型,需要使用StringVar類型定義:label_text = tk.StringVar()
  • (2)整型則需要使用 label_text = tk.IntVar()
  • (3)雙精度則使用label_text = tk.DoubleVar()
  • (4)布爾型則對應的label_text = tk.BooleanVar()

既然知道了這個原因,咱們再修改程序之前,先來測試一下:

(這個時候應該打開IDLE了!)

>>> from tkinter import *>>> win = Tk()>>> sv = StringVar()>>> sv.get()''>>> sv.set("你好,神秘的TKinter!")>>> sv.get()'你好,神秘的TKinter!'>>> sv.set("%s --- 快樂編程,快樂成長!" % sv.get())>>> sv.get()'你好,神秘的TKinter! --- 快樂編程,快樂成長!'>>>

看來,通過這種方式是可以實現更新Tkinter中變量的目的的!

讓我們修改一下最初的程序

import tkinter as tkclass Window(tk.Tk):????def __init__(self):????????super().__init__()????????self.title("Hello")????????self.label_text = tk.StringVar()????????self.label_text.set('choose')????????self.label = tk.Label(self, textvariable=self.label_text)????????self.label.pack(fill=tk.BOTH, expand=1, padx=100, pady=30)????????hello_button = tk.Button(self, text="Say Hello", command=self.say_hello)????????hello_button.pack(side=tk.LEFT, padx=(20, 0), pady=(0, 20))????????goodbye_button = tk.Button(self, text="Say GoodBye", command=self.say_goodbye)????????goodbye_button.pack(side=tk.RIGHT, padx=(0, 20), pady=(0, 20))????def say_hello(self):????????self.label_text.set('welcome')????def say_goodbye(self):????????self.label_text.set('Goodbye! (Closing in 2 seconds)')????????self.after(2000, self.destroy)if __name__ == "__main__":????window = Window()????window.mainloop()

通過在初始化方法__init__()中定義,并給到一個初始化值

self.label_text = tk.StringVar()self.label_text.set('choose')

然后在按鈕點擊函數中,分別賦予新的值,這個時候就可以看到對應的label顯示的文本發生了變化。

搞定!

在這個代碼里,大家需要注意一點。我們在設置變量和控件綁定的時候,使用的是textvariable=self.label_text這個參數,而不是之前的text。

好了,今天的知識點,大家掌握了嗎?

總結

以上是生活随笔為你收集整理的点击button时候传递一个参数实现局部刷星_Tkinter的一个小小的规则,如果不了解,可能不会解决掉这个问题...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。