第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用 tkinter 進(jìn)行 Python GUI 編程

使用 tkinter 進(jìn)行 Python GUI 編程

婷婷同學(xué)_ 2024-01-27 16:13:23
我有一個(gè)有多行的表單。按 Enter 鍵會(huì)打開一個(gè)選項(xiàng)窗口。但每次我按回車鍵時(shí),它都會(huì)打開一個(gè)新的選項(xiàng)窗口。我如何控制和檢查選項(xiàng)窗口是否打開然后不打開選項(xiàng)窗口。import tkinter as tkfrom tkinter import ttkfrom tkinter import *from tkinter import messagebox# Directory/File processing librariesimport osimport configparserimport csvdef callback():    #messagebox.showinfo("Netezza", Folder_Name_var.get())    #messagebox.showinfo("Netezza", Table_Name_var.get() )    config = configparser.ConfigParser()    config.read('C:\\aa\\config.ini')    #for value in config['Folder']: print(value)    for key in config.items('Folder'):        print (key[1].replace('{Folder_Name}',Folder_Name_var.get()))        os.makedirs(key[1].replace('{Folder_Name}',Folder_Name_var.get()),exist_ok=True)def click_tv(event):    #messagebox.showinfo("Inside")    selected=trv.focus()    print(trv.item(selected))def press_enter(event):    #messagebox.showinfo("Inside")    selected=trv.focus()    print(trv.item(selected))    print(str((event.keysym)))    if str((event.keysym))=='Return':        option_wnd=Toplevel(root)        option_wnd.geometry('200x200')        option_wnd.title('Option Window')        option_wnd.grab_set()        #option_wnd.pack()def selection_change(event):    selected = trv.selection()[0]    print('You clicked on', trv.item(selected))    #option_wnd.mainloop()root = Tk()Folder_Name_var = tk.StringVar()Table_Name_var = tk.StringVar()# This is the section of code which creates the main windowroot.geometry('873x498')root.configure(background='#63B8FF')root.title('Automation Software - Blue Shield of California')pic= Canvas(root, height=100, width=100)#pic= Canvas(root, height=225, width=580)#picture_file = PhotoImage(file = 'c:\\aa\\bsc.png')#pic.create_image(0, 0, anchor=NW, image=picture_file)#pic.place(x=5, y=5)每次我在根窗口上按 Enter 鍵時(shí),都會(huì)打開一個(gè)彈出窗口。我需要控制它。如果彈出窗口打開,那么我們不應(yīng)該允許另一個(gè)彈出窗口打開。
查看完整描述

4 回答

?
繁華開滿天機(jī)

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊

直接的方法是使用winfo_exists():


root.option_wnd = None # Init value


def press_enter(event):

    #messagebox.showinfo("Inside")

    selected=trv.focus()

    print(trv.item(selected))

    print(str((event.keysym)))

    if str((event.keysym))=='Return': 

        if root.option_wnd and root.option_wnd.winfo_exists():

            root.option_wnd.lift() # make this window on the top.

        else: # create this window

            root.option_wnd  = tk.Toplevel(root)

            .....

但我認(rèn)為你不需要每次用戶輸入時(shí)都創(chuàng)建這個(gè)窗口。Enter在開始時(shí)創(chuàng)建它,只需在用戶輸入時(shí)顯示它Enter


例如:


root = tk.Tk()

option_wnd = tk.Toplevel()

option_wnd.wm_protocol("WM_DELETE_WINDOW", option_wnd.withdraw) # when user try to close this window, hide it instead of destroy it

.....



option_wnd.withdraw() # hide this window


def press_enter(event):

    #messagebox.showinfo("Inside")

    selected=trv.focus()

    print(trv.item(selected))

    print(str((event.keysym)))

    if str((event.keysym))=='Return': 

        option_wnd.deiconify() # show it.


查看完整回答
反對 回復(fù) 2024-01-27
?
縹緲止盈

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊

我能想到的一個(gè)選項(xiàng)是像這樣綁定選項(xiàng)窗口:

option_wnd.bind('<Return>', lambda e: option_wnd.close()) # or withdraw() or quit() ?

將選項(xiàng)窗口綁定到按下 Enter 鍵時(shí)它會(huì)關(guān)閉(盡管我不知道上述函數(shù)的差異(有,所以你應(yīng)該查找)),但是如果你想使用Enter(返回)輸入值,這可能會(huì)妨礙你鍵,因?yàn)樗鼘㈥P(guān)閉窗口。另一個(gè)選項(xiàng)是將選項(xiàng)窗口綁定到此事件:

option_wnd.bind('<FocusOut>', lambda e: option_wnd.close())

這是當(dāng)窗口不再受到關(guān)注時(shí),因此如果您按 Enter 鍵,它將打開一個(gè)新窗口,但仍然打賭舊窗口應(yīng)該關(guān)閉。您也可以嘗試用某些東西進(jìn)行一些邏輯編程,例如當(dāng)輸入按下“打開”模式時(shí),再次按下它不會(huì)打開窗口,而當(dāng)您關(guān)閉現(xiàn)有窗口時(shí),它將再次允許這種情況。


查看完整回答
反對 回復(fù) 2024-01-27
?
ITMISS

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊

def press_enter(event):

    #messagebox.showinfo("Inside")

    root.deiconify ()

    selected=trv.focus()

    print(trv.item(selected))

    print(str((event.keysym)))

    if str((event.keysym))=='Return':

        option_wnd=Toplevel(root)

        option_wnd.geometry('200x200')

        option_wnd.title('Option Window')

        option_wnd.grab_set()

        #option_wnd.pack()


查看完整回答
反對 回復(fù) 2024-01-27
?
慕運(yùn)維8079593

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個(gè)贊

如果您不使用類,您可以執(zhí)行以下操作:


options_displayed = False #global


def option_closed(w):

    global options_displayed

    w.destroy() #close the actual window

    options_displayed = False # log the fact it is now close


def press_enter(event):

    global options_displayed # reference global variable

    #messagebox.showinfo("Inside")

    selected=trv.focus()

    print(trv.item(selected))

    print(str((event.keysym)))

    if str((event.keysym))=='Return' and not options_displayed:

        option_wnd=Toplevel(root)

        option_wnd.geometry('200x200')

        option_wnd.title('Option Window')

        option_wnd.grab_set()

        option_wnd.grab_set()

        option_wnd.protocol("WM_DELETE_WINDOW", lambda w= option_wnd :option_closed(w))

        



查看完整回答
反對 回復(fù) 2024-01-27
  • 4 回答
  • 0 關(guān)注
  • 294 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號