レイアウトのヘルプTkinterにはPython 3.1。私は近いです、私はこれを終える助けてください
-
19-09-2019 - |
質問
私は道でのPython 3.1を使用しています。
右にそれの一番下にスクロールバーを持つ最初の行と編集可能なテキスト領域にラベル、テキスト入力フィールド、ボタン - - 2行目の私はTkinterのを使用して簡単なGUIを構築しようとしています。私は、レイアウトを修正助けてください。私は以下の持っていることは、かなりの作業を行いません。私は、グリッドを使用する必要がある場合、私はなります。私は非常に単純なコードを維持したい - 私は私の同僚のいくつかにはPythonを「売る」にしたいです。だから、私は多少まともなルックアンドフィールを取得したいです。あなたが気にしない場合は、より良いパディングを提案します。また、私の変数名などあれば奇妙なようで、その後、メモしてください。
同時に、私はこれは私が上で多くの時間を費やしていない使い捨てのスクリプトであることをふりをしたいと思います。私はあなたの助けを求めておりますので、それはそうではありませんが、彼らは知っている必要はありません。)。だから、私はちょうど、視覚的に、魅力的なクリーンでシンプルである何かをしたいなど、素敵な境界線を作成するために、派手なコードを導入する必要はありません。私がいない場合は、その後、私のプレゼンテーションは、その目標を達成することはありません。
私のコードは以下の通りです、ありがとうございます:
class App:
def __init__(self, parent):
frame = Frame(parent)
self.__setup_gui(frame) # Call Helper
frame.pack(padx=15, pady=15)
parent.title('To be changed')
def __setup_gui(self, frame):
# First Row
self.cs_label = Label(frame, text='Change Set: ')
self.cs_label.pack(side=LEFT, padx=10, pady=10)
self.cs_val = Entry(frame, width=10)
self.cs_val.pack(side=LEFT, padx=10, pady=10)
self.get_button = Button(frame, text='Get', command=self.get_content)
self.get_button.pack(side=LEFT, padx=10, pady=10)
# Text area and scrollbar
self.text_area = Text(frame, height=10, width=50, background='white')
# Put a scroll bar in the frame
scroll = Scrollbar(frame)
self.text_area.configure(yscrollcommand=scroll.set)
self.text_area.pack(side=TOP)
scroll.pack(side=RIGHT,fill=Y)
self.clipboard_var = IntVar()
self.notepad_var = IntVar()
def get_content(self):
print(self.clipboard_var.get())
print(self.notepad_var.get())
###################################################################################################
if __name__ == '__main__':
root = Tk()
app = App(root)
root.mainloop()
解決
あなたは間違いなく、グリッドマネージャーをしたい - パックは、それ自体で垂直または水平スタックアップのために動作します。あなたはそれを回避するために、複数のフレームを使用することができますが、私はあなただけで起動するグリッドでそれを行う場合、それはGUIを拡大する方が簡単です見つけます。
ここで私は実際に素早くあなたが言ったことをベースとコードまで働いてきたものです。私は/パディングを取り除か減少 - それは私のために巨大に見えた - と私はパディングがより容易に動作させるためにサブフレームでは、2つのスクロールバーを設定します。あなたのテキストエリアがラップ= NONEを持っていない必要がある水平スクロールバーを有用にすることに注意してください。それ以外の場合はあなたにもtkinter.scrolledtextから簡単に「スクロールテキスト」ウィジェットを使用し、水平スクロールバーをスキップすることがあります。
私は今、一番上のボタンを示して最小サイズで、サイズ変更可能にするために、物事を少し再フレーミングしました - 。MinSizeのと行/ columnconfigureの使用を参照してください。
ところで、あなたの変数がどこから引かれていないように見える - 意図的なことです。
?from tkinter import *
class App:
def __init__(self, parent):
self.__setup_gui(parent) # Call Helper
parent.title('To be changed')
def __setup_gui(self, parent):
# First Row
self.rowframe = Frame(parent)
self.rowframe.grid()
self.cs_label = Label(self.rowframe, text='Change Set: ')
self.cs_label.grid(row=0, column=0, padx=2, pady=2)
self.cs_val = Entry(self.rowframe, width=10)
self.cs_val.grid(row=0, column=1, padx=2, pady=2)
self.get_button = Button(self.rowframe, text='Get', command=self.get_content)
self.get_button.grid(row=0, column=2, padx=2, pady=2)
parent.update_idletasks()
parent.minsize(width=self.rowframe.winfo_width(), height=self.rowframe.winfo_height())
# Text area and scrollbars
self.textframe = Frame(parent)
self.textframe.grid(row=1, columnspan=2, padx=2, pady=2, sticky=N+S+E+W)
self.hscroll = Scrollbar(self.textframe, orient=HORIZONTAL)
self.vscroll = Scrollbar(self.textframe)
self.text_area = Text(self.textframe, height=10, width=50, wrap=NONE, background='white', yscrollcommand=self.vscroll.set, xscrollcommand=self.hscroll.set)
self.text_area.grid(row=0, column=0, sticky=N+S+E+W)
self.hscroll.config(command=self.text_area.xview)
self.hscroll.grid(row=1, column=0, sticky=E+W)
self.vscroll.config(command=self.text_area.yview)
self.vscroll.grid(row=0, column=1, sticky=N+S)
# Row 0 defaults to 0
parent.rowconfigure(1, weight=1)
parent.columnconfigure(1, weight=1)
# Textarea setup
self.textframe.rowconfigure(0, weight=1)
self.textframe.columnconfigure(0, weight=1)
self.clipboard_var = IntVar()
self.notepad_var = IntVar()
def get_content(self):
print(self.clipboard_var.get())
print(self.notepad_var.get())
###################################################################################################
if __name__ == '__main__':
root = Tk()
app = App(root)
root.mainloop()
Tkinterのは、「標準」来て便利な機能ですが、今、言ったことすべてが...あなたは、PyGTKを、PyQtは、wxPythonのかをより視覚的な魅力を取得する可能性があります。