0

こんにちは、明けましておめでとうございます。

ユーザー インターフェイスを構築しようとしていますが、Tix.ScrolledListbox に問題があります。(Python 2.6.5、Tix 8.4.3、Windows XP)

ユーザーが以前に行った選択に応じて、さまざまな数のアイテムを表示するために使用したかったのです。

これは GIS です。ユーザーが ComboBox からレイヤーを選択し、ボタンを押すと、Listbox に属性テーブルから取得したすべてのフィールド名が表示されます。したがって、一部のレイヤーには 5 つのフィールドがあり、他のレイヤーには 30 フィールドがあります。原則として動作します。

ただし、リストボックスの横のスクロールバーは灰色のままで機能しません。

小さなテスト スニペットでは、ボタンを押した後、ランダム (0..100) の数のアイテムがリスト ボックスに表示され、スクロールバーが機能します。

何も思いつきません。誰もこれを前に持っていましたか?

編集: 次のサンプルコードは、arcpy がインポートされたときにスクロールできない scrolledListbox を示しています。

import Tix  
import random  
import arcpy       

class SampleApp(object):
  def __init__(self):
    self.window = Tix.Tk()
    #listbox
    self.lbx = Tix.ScrolledListBox(self.window, width = 30)
    self.lbx.listbox.insert(Tix.END, " ")
    self.lbx.listbox.bind("<<ListboxSelect>>", self.Choose)

    #button to generate new list
    self.btn = Tix.Button(self.window, text = "new list",
                          command = self.NewList)
    #label shows chosen list item
    self.lbl = Tix.Label(self.window, text = "   ", bg = "white")


    #pack
    self.btn.pack(pady = 10)
    self.lbx.pack(side="top", fill="both", expand=True, pady = 10)
    self.lbl.pack(pady = 10)

    self.window.mainloop()

  #function to generate new listbox items on button command
  def NewList(self):
    self.lbx.listbox.delete(0, Tix.END)
    r = random.randint(1, 30)
    for i in range(r):
        self.lbx.listbox.insert(Tix.END, i)

  #event to show selected item in label
  def Choose(self, event):
    widget = event.widget
    selection = widget.curselection()
    value = widget.get(selection[0])
    self.lbl.config(text = value)


 sa = SampleApp()
4

1 に答える 1

-1

スクロールバーをリストボックスに添付しましたか?

from Tkinter import *

root = Tk()

scrollbar = Scrollbar(root)
scrollbar.pack(side=RIGHT, fill=Y)

listbox = Listbox(root)
listbox.pack()

for i in range(100):
    listbox.insert(END, i)

# attach listbox to scrollbar
listbox.config(yscrollcommand=scrollbar.set)
scrollbar.config(command=listbox.yview)

mainloop()

盗まれた場所:http://effbot.org/zone/tkinter-scrollbar-patterns.htm

編集:Tix.ScrolledListBoxの動作は異なるため、上記のソリューションと混同しないでください。

于 2013-01-02T13:32:53.767 に答える