Python 3用のtkinterに新しい人物として、ドキュメンテーションとスタックを読んでいるにも関わらず(Pythonスクリプトのコンテキストで)GUIを生成する方法を調べるには、オーバーフローの答え。私の目的は、ラジオボタンの選択肢が7つあり、それぞれが選択されたときに送信ボタンが押されると、選択されたラジオボタンはその値を変数に渡します。しかし、私は私のGUIを実装すると、私は2つの問題が発生します。tkinterのルートウィンドウとラジオボタンのGUI生成の問題
最初は、自分のフレームがラジオボタンで正しく開きますが、空白で「tk」というタイトルの別のフレームが表示されます。私が何をしていても(つまり、他の人が触れたようにroot.withdraw()
などを使用してください)、この空白のウィンドウは引き続き表示されます。
私が抱えている2番目の問題は、生成されたときに最初のラジオボタン以外のすべてが選択され、通常は中央のドットではなくハイフンで選択されることです。ユーザーは選択したオプションを押すことができます。選択以外はすべて選択解除されますが、通常のようには見えず、おそらくユーザーを混乱させるでしょう。私はtristatevariableを誰にも設定していないが、それはうまくいきませんでした(少なくとも私の裁判では)。私はまた、生成する前にすべてのラジオボタンにdeselect()
の機能を強制しようとしましたが、どちらも機能しませんでした。また、ラジオボタンの変数はintではなく文字列を処理する必要があることに注意してください。ここで何が起こっていて、どうすれば修正できますか?私はこの問題とTkinterにははるかに複雑よりであるように思わ解決するように見えるカントとして任意の助けいただければ幸いです
if urldata == None:
class ResolutionInputGUI:
def __init__(self, master):
self.master = master
master.title("My GUI")
self.label = tk.Label(master, text="Your Screen Resolution Is: " + screenres + "\n")
self.label.pack()
MODES = [
("500×500", "500×500"),
("1280×800", "1280×800"),
("1280×1024", "1280×1024"),
("1440×900", "1440×900"),
("1680×1050", "1680×1050"),
("1920×1080", "1920×1080"),
("1920×1200", "1920×1200")
]
resolution = tk.StringVar()
resolution.set("500×500")
for text, mode in MODES:
self.radiobutton = tk.Radiobutton(master, text=text, variable=resolution, value=mode)
self.radiobutton.pack(anchor=tk.W)
self.submit_button = tk.Button(master, text="Submit", command=self.submit)
self.submit_button.pack()
self.cancel_button = tk.Button(master, text="Cancel", command=self.cancelbutton)
self.cancel_button.pack()
def submit(self):
global screenres
screenres = self.radiobutton.get()
root.quit()
self.master.destroy()
print(screenres)
def cancelbutton(self):
raise SystemExit
root = tk.Tk()
my_gui = ResolutionInputGUI(root)
root.mainloop()
次のように
これらの一見関連の問題の両方に関連するコードスニペットがありますもともと思った。また、ここで非効率的にやっていることや、エンドユーザーエクスペリエンスをより「フレンドリー」にするための何かがありますか?どうもありがとうございます!
@BryanOakleyはい、何らかの理由で、私はそれがスタックオーバーフローのためにそれを入力するための「if」文の後に、適切にインデントすることができなかったあなたのインデント –
と間違って何かがあります。それは走ります、それはちょうど上で説明された問題を持っています。 –
私たちは私たちが見るものによってのみ行くことができます。それを修正する時間をかけてください。 –