現在、私はPython 3.6 Tkinterを使ってプロジェクトを進めています。現時点では、私は "User"または "Admin"のいずれかを入れるためのユーザアクセス権OptionMenuを作ろうとしています。私はいろいろな方法を試しましたが、それを自分で修正するか、オンラインで参考になる資料を見つけることはできません。 問題はOptionMenuを作成して表示することではなく、StringVar変数の値が変更されていないことです。問題は、新しいオプションが選択されても、OptionMenu内のテキストが変更されていないことです。Tkinter OptionMenuウィジェットに値が表示されない
class UsersDetailsEditPage(Tk):
def __init__(self, *args, **kwargs):
Tk.__init__(self, *args, **kwargs)
self.title("Edit User Details")
self.option_add("*Font", 'TkDefaultFont')
self.noteBook = ttk.Notebook(self)
for i in range(len(users)):
self.noteBook.add(self.getUserViewFrame(users[i]), text=users[i][2])
self.noteBook.pack()
self.resizable(width=False, height=False)
def getUserViewFrame(self, user):
frame = Frame(self)
frame.grid_rowconfigure(1, weight=1)
frame.grid_columnconfigure(1, weight=1)
Label(frame, text="User's name:").grid(row=0, column=0, sticky=W)
nameText = Text(frame, height=1, width=20)
nameText.insert("1.0", user[2])
nameText.edit_reset()
nameText.grid(row=0, column=1, sticky=E)
Label(frame, text="Username:").grid(row=1, column=0, sticky=W)
usernameText = Text(frame, height=1, width=20)
usernameText.insert("1.0", user[0])
usernameText.edit_reset()
usernameText.grid(row=1, column=1, sticky=E)
Label(frame, text="Password:").grid(row=2, column=0, sticky=W)
passwordText = Text(frame, height=1, width=20)
passwordText.insert("1.0", user[1])
passwordText.edit_reset()
passwordText.grid(row=2, column=1, sticky=E)
# the constructor syntax is:
# OptionMenu(master, variable, *values)
Label(frame, text="User Access:").grid(row=3, column=0, sticky=W)
self.options = StringVar()
self.options.set("User")
self.userAccessDrop = ttk.OptionMenu(frame, self.options, "User", *("User", "Admin"))
self.userAccessDrop.config(width=10)
self.userAccessDrop.grid(row=3, column=1, sticky=E)
return frame
This is the output of the code
私は(私が思う)必要なすべてのライブラリの輸入を持っている:
from tkinter import *
from tkinter import messagebox
import tkinter.ttk as ttk
import csv
import os
誰もが、それははるかに高く評価されるだろう、この仕事を作る方法を作業することができます。 ありがとう
@Jonathonユーザー数が決まっていないので(ファイルから取得してその情報を使用して2D配列を生成するので)、ユーザーごとにフレームを作成してノートブックウィジェットは、各ユーザーのフレームを生成し、配列内の各ユーザーを反復するメソッドを作成することでした。あなたが言ったことを何かできることがあれば、それは大いに感謝されます –
私は私の答えを例で編集しました。 – Novel
@ジョナトンオハイオ州右私は前の完全な例を見ていませんでした(私はばかだから!)、いくつかの微妙な変更(またはあなたがするならtkintering)の後、私は最終的にあなたのコードで動作した。これまでずっとありがとう –