我只想將滾動條放到串列框中。我試著這樣做;
import tkinter as tk
from tkinter import ttk, Label, Frame, Entry, Button, Listbox,
Scrollbar, END, VERTICAL, RIGHT, Y
from PIL import Image, ImageTk
class Page2(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
ascrollbar = Scrollbar(self, orient=VERTICAL)
diseaseBox = Listbox(self, width=50, height=300, yscrollcommand = ascrollbar.set)
diseaseBox.grid(row=1, column = 1, padx = 100, pady = 300)
ascrollbar.config(command = diseaseBox.yview)
ascrollbar.grid(row=1, column=1)
diseaseList = ["one", "two" , "three"]
if diseaseBox is not None:
for item in diseaseList:
diseaseBox.insert(END,item)
但滾動條不會顯示。我嘗試使用 pack() 方法,但出現此錯誤
不能在 .!frame.!page2 內使用幾何管理器網格,該網格已經具有由 pack 管理的從屬
我該如何解決這個問題?
uj5u.com熱心網友回復:
您的滾動條和串列框位于網格上的相同位置。
編輯1:添加一些我認為使用這行代碼的代碼會起作用
diseaseBox = Listbox(self, width=50, height=300, yscrollcommand = ascrollbar.set)
diseaseBox.grid(row=1, column = 1, padx = 100, pady = 300)
ascrollbar.config(command = diseaseBox.yview)
ascrollbar.grid(row=1, column=2)
編輯2:如果不是網格問題,可能配置和滾動條的制作不好
ascrollbar = Scrollbar(self, orient=VERTICAL,command=diseaseBox.yview)
diseaseBox = Listbox(self, width=50, height=300)
diseaseBox.grid(row=1, column = 1, padx = 100, pady = 300)
diseaseBox.configure(yscrollcommand = ascrollbar.set)
ascrollbar.grid(row=1, column=0)
uj5u.com熱心網友回復:
問題是滾動條和串列框都在同一列中。如果您將滾動條放在其他列中,它將顯示出來。
但是,您也有以下問題:a) 串列框是視窗高度的兩倍以上,b) 滾動條沒有被垂直拉伸以填充列。因此,滾動條在列中垂直居中,因此不在視窗邊緣。
如果在滾動條上sticky='ns'呼叫時添加,它會顯示出來。grid如果您使串列框更小并且填充更少,它也會顯示出來。
uj5u.com熱心網友回復:
我和你有過類似的經歷。實際上,我使用 irc chat 來決議名稱。但是你可以看到我的例子。您可以發表評論,也可以不發表評論。順便說一句,我不使用調整大小。你也可以改變它。
#!/usr/bin/python3.11.0b1
import tkinter as tk
userNames = 'wendy_25 andywolf StePHen_0 Phoneboy suspect0 @xpc` picturesque kazzie_f_ nj_pinoy African_m pSyLock3` a_john FiftyShadesOfJhay dadENGR bords b3bang ^lucia^ Frailty ^Bagito^ Turkish_Male_With_Cam missy`mia [Cher] Blacklsted Ramses-II @gracie Chuck_42 Ahkong- asl_pls Allah[swt] Sorbetero @TrooperBuggs Alain- Single_Mom45 Demonya Tomaz tropix tapsilog mib_mnbvcxz @Bulate Guest49512 mib_xcvb S1l-v3r BURNgirl TrEz`U'
#userNames =""
class App(tk.Frame):
def __init__(self, master):
"""Create our widgets"""
tk.Frame.__init__(self,master)
self.userNameList = tk.Listbox(self, width = 25)
self.scrUserNameList = tk.Scrollbar(self, command=self.userNameList.yview, orient=tk.VERTICAL)
self.userNameList.config(yscrollcommand=self.scrUserNameList.set)
self.scrUserNameList.pack(side=tk.RIGHT, fill=tk.BOTH)
self.userNameList.pack(side=tk.RIGHT, fill=tk.BOTH)
def populateList(self,data):
"""Adds items to the list from a string of space seperated items"""
users = data.strip().split()
for user in users:
self.userNameList.insert(tk.END,user)
if __name__ == '__main__':
root = tk.Tk()
#Create the Application
app = App(root)
app.pack()
#Before we start the mainloop, populate the list.
app.populateList(userNames)
root.mainloop()
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/479811.html
