簡體   English   中英

Python - 使用 Tkinter——在腳本之間保存單選按鈕變量

[英]Python - Using Tkinter--saving radio button variables between scripts

我有一個使用 tkinter 的腳本。 我在這個腳本中創建了預定義的單選按鈕。 我正在嘗試從第二個腳本調用腳本。 當我運行原始腳本時,打印效果很好。 但是,當我從第二個腳本運行它時,單選按鈕 var.get() 變量似乎沒有在腳本之間進行轉換,並且打印輸出不符合預期。 我究竟做錯了什么? 對此的任何幫助將不勝感激!

前任。 當我從第一個腳本運行時,打印輸出是:

您選擇了北極

你選擇了森林

你選擇了草原

你選擇了山

當我從第二個腳本運行時,打印輸出是:

您已選擇

您已選擇

您已選擇

您已選擇

--缺少單選按鈕選擇

其他詳細信息:兩個腳本都保存在同一個文件夾中。 我嘗試將“選擇”設置為全局變量。

要重現此錯誤:

1.在同一文件夾中另存為兩個單獨的python腳本(第一個腳本,第二個腳本)。

  1. 運行第一個腳本,選擇單選,打印消息將如預期的那樣。 例如“你選擇了北極”

  2. 運行第二個腳本,在菜單中選擇“創建”。 選擇“獲得怪物”。 進行單選按鈕選擇。 打印出來的只是“您已選擇”它不包括生物群系

第一個腳本:

from tkinter import *

def sel():
    selection = "You've selected " + var.get()
    poop = var.get()
    print(selection)
    return poop


root = Tk()
var = StringVar()

radio_frame = Frame(root, borderwidth=2,relief="groove")

## Radio buttons for choosing biome
biome_label=Label(radio_frame, text="Please choose a biome")
biome_label.pack()
search_biome1 = Radiobutton(radio_frame, text="Arctic", variable=var,
value="Arctic", command=sel, width=10, anchor=W)
search_biome1.pack()
search_biome2 = Radiobutton(radio_frame, text="Coast", variable=var,
value="Coast", command=sel, width=10, anchor=W)
search_biome2.pack()
search_biome3 = Radiobutton(radio_frame, text="Desert", variable=var,
value="Desert", command=sel, width=10, anchor=W)
search_biome3.pack()
search_biome4 = Radiobutton(radio_frame, text="Forest", variable=var,
value="Forest", command=sel, width=10, anchor=W)
search_biome4.pack()
search_biome5 = Radiobutton(radio_frame, text="Grassland", variable=var,
value="Grassland", command=sel, width=10, anchor=W)
search_biome5.pack()
search_biome6 = Radiobutton(radio_frame, text="Hill", variable=var,
value="Hill", command=sel, width=10, anchor=W)
search_biome6.pack()
search_biome7 = Radiobutton(radio_frame, text="Mountain", variable=var,
value="Mountain", command=sel, width=10, anchor=W)
search_biome7.pack()
search_biome8 = Radiobutton(radio_frame, text="Swamp", variable=var,
value="Swamp", command=sel, width=10, anchor=W)
search_biome8.pack()
search_biome9 = Radiobutton(radio_frame, text="Underdark", variable=var,
value="Underdark", command=sel, width=10, anchor=W)
search_biome9.pack()
search_biome10 = Radiobutton(radio_frame, text="Underwater", variable=var,
value="Underwater", command=sel, width=10, anchor=W)
search_biome10.pack()
search_biome11 = Radiobutton(radio_frame, text="Urban", variable=var,
value="Urban", command=sel, width=10, anchor=W)
search_biome11.pack()

radio_frame.grid()




root.mainloop()

第二個腳本:

from tkinter import *
from tkinter import messagebox



root = Tk()
root.title("Main")

def getMonsters():
    import DD_Enemy_Generator_Biome
    poop = DD_Enemy_Generator_Biome.sel()


menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="Create", menu=filemenu)
filemenu.add_command(label="Get Monsters", command=getMonsters)
root.config(menu=menubar)
root.mainloop()

改變 var.get 為此工作的方式..另外,在命令中使用 lambda 並且它可以工作......

def sel(biome_):
    global selection
    selection = "You've selected " + biome_
    poop = biome_
    print(selection)
    return poop

root = Tk()
var = StringVar()

radio_frame = Frame(root, borderwidth=2,relief="groove")

## Radio buttons for choosing biome
biome_label=Label(radio_frame, text="Please choose a biome")
biome_label.pack()

search_biome2 = Radiobutton(radio_frame, text="Coast", variable=var,
value="Coast", command=lambda value="Coast": sel(value), width=10, anchor=W)

暫無
暫無

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

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