2017-05-29 7 views
0

数週間、私はアプリケーションのスクロールバーを取得しようとします。しかし、TKinterモジュールと競合しており、私はそれを修正する方法がわかりません。私のモジュールがなければスクロールバーですが、スクロールバーではありません。私のアプリケーションの中からこの例で私を助けてくれますか?Python - スクロールバーはどのようにラベル、ラジオボタン、ボタンで動作しますか?

リラックスポケット

ps。いいね、私は半分初心者です。 :/:p PPs。代わりに、それらを表示するには、通常のpackgridまたはplaceメソッドを使用しての、あなたがCanvascreate_windowメソッドを使用する必要があり、Canvas内のウィジェットをスクロールするtextdefinitions、すべてのラジオボタン

from __future__ import print_function 
from Tkinter import * 
import Tkinter as tk 
from result import * 

master = tk.Tk() 

frame=Frame(master,width=300,height=300) 
frame.pack 
canvas=Canvas(frame,bg='#FFFFFF',width=300,height=300,scrollregion=(0,0,500,500)) 

vbar=Scrollbar(frame,orient=VERTICAL) 
vbar.pack(side=RIGHT,fill=Y) 
vbar.config(command=canvas.yview) 

def sumlist(): 
    sum = (vallist_a[-1]) + (vallist_b[-1]) + (vallist_c[-1]) + (vallist_d[-1]) + (vallist_e[-1]) + (vallist_f[-1]) + (vallist_g[-1]) + (vallist_h[-1]) + (vallist_i[-1]) 
    print (sum) 

def create_window(): #Definion und Festlegung neues Fenster 
    toplevel = Toplevel() 
    toplevel.title('result') 
    toplevel.geometry('1500x1000') 
    toplevel.focus_set() 
    sum = (vallist_a[-1]) + (vallist_b[-1]) + (vallist_c[-1]) + (vallist_d[-1]) + (vallist_e[-1]) + (vallist_f[-1]) + (vallist_g[-1]) + (vallist_h[-1]) + (vallist_i[-1]) 
    if 9<= sum <= 14: 
     msg = Message(toplevel, text = result1) 
     msg.config(bg='lightgreen', font=('times', 24, 'italic')) 
     msg.pack() 
    if 15<= sum <= 21: 
     msg = Message(toplevel, text = result2) 
     msg.config(bg='lightgreen', font=('times', 24, 'italic')) 
     msg.pack() 
    if 22<= sum <= 28: 
     msg = Message(toplevel, text = result3) 
     msg.config(bg='lightgreen', font=('times', 24, 'italic')) 
     msg.pack() 
    if 29<= sum <= 36: 
     msg = Message(toplevel, text = result4) 
     msg.config(bg='lightgreen', font=('times', 24, 'italic')) 
     msg.pack() 


def ShowChoice(text, v, testlist): 
    print(v.get()) 
    testlist.append(v.get()) 

vallist_a = [] 
vallist_b = [] 
vallist_c = [] 
vallist_d = [] 
vallist_e = [] 
vallist_f = [] 
vallist_g = [] 
vallist_h = [] 
vallist_i = [] 


hello = [ 
    (1), 
    (2), 
    (3), 
    (4), 
] 

officer = [ 
    (1), 
    (2), 
    (3), 
    (4), 
] 

borg = [ 
    (1), 
    (2), 
    (3), 
    (4), 
] 

vulcans = [ 
    (1), 
    (2), 
    (3), 
    (4), 
] 

home = [ 
    (1), 
    (2), 
    (3), 
    (4), 
] 

crew = [ 
    (1), 
    (2), 
    (3), 
    (4), 
] 

important = [ 
    (1), 
    (2), 
    (3), 
    (4), 
] 

take = [ 
    (1), 
    (2), 
    (3), 
    (4), 
] 

bye = [ 
    (1), 
    (2), 
    (3), 
    (4), 
] 

tk.Label(canvas, text='Which Captain are you?', font=("Helvetica", 30), fg = 'red').pack() 

varhello = tk.IntVar() 

for i, val in enumerate(hello): 
    tk.Radiobutton(canvas, text=text[i], variable=varhello, value=val, 
    command=lambda t=text, a=varhello: ShowChoice(t, a, vallist_a)).pack(anchor=tk.N) 


Button(canvas, text='forward', command=create_window).pack(padx=5, anchor=N, pady=4) 


canvas.config(width=300,height=300) 
canvas.config(yscrollcommand=vbar.set) 
canvas.pack(side=LEFT,expand=True,fill=BOTH) 

master.mainloop() 
+0

エラー(紛争)メッセージは何ですか? – frankyjuang

+0

エラーメッセージはありません。アプリケーションは何もしません。彼女は始まりませんが、彼女はスクロールバーなしでいます。 – LoveSpock

+0

あなたは完全なコードを提供できますか? – frankyjuang

答えて

0

ずに私のコードです。メソッドの構文は canvas.create_window(x, y, window=widget, **kw)です。 Hereキーワード引数の詳細を取得できます。

例:

import tkinter as tk 

root = tk.Tk() 

canvas = tk.Canvas(root) 
scrolly = tk.Scrollbar(root, orient='vertical', command=canvas.yview) 

# display labels in the canvas 
for i in range(10): 
    label = tk.Label(canvas, text='label %i' % i) 
    canvas.create_window(0, i*50, anchor='nw', window=label, height=50) 

canvas.configure(scrollregion=canvas.bbox('all'), yscrollcommand=scrolly.set) 

canvas.pack(fill='both', expand=True, side='left') 
scrolly.pack(fill='y', side='right') 

root.mainloop() 
+0

さて、この構文は可能です、ありがとう!もう1つの質問ですが、あなたは「範囲内」のために使っていますが、ラベルは1つではなく10種類あります。私はクラスで作業することはできませんが、どのように私は同じコードを10回書くことなく、この0の異なるラベルを使用することができますと思いますか? – LoveSpock

+0

ラベルのテキストだけが変化する場合は、 'label_text'という文字列のリストを作成し、' label = tk.Label(canvas、text = 'label%i'%i) 'を' label = tk.Label(キャンバス、テキスト= label_text [i]) '。 –

関連する問題