首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Tkinter:滚动条显示但不工作

Tkinter:滚动条显示但不工作
EN

Stack Overflow用户
提问于 2018-08-10 01:03:00
回答 1查看 183关注 0票数 0

我正在尝试创建一个窗口来显示数据帧。但是,数据帧太大了,所以我想添加滚动条来查看数据。问题是滚动条出现了,但不起作用。我已经尝试了几个我在这里找到的解决方案,但似乎没有一个对我有效。

下面是我的代码:

代码语言:javascript
复制
import tkinter as tk
root = tk.Tk()
#create frame
frame = tk.Frame(root)
frame.grid(sticky = 'news')
frame.grid_propagate(False)

#create Canvas
canvas = tk.Canvas(frame, bg = 'white')
canvas.grid(row = 0, column = 0)

#scrollbars
yscrollbar = tk.Scrollbar(frame, orient = tk.VERTICAL, command = canvas.yview)
yscrollbar.grid(row = 0, column = 1, sticky = tk.NS)
canvas.configure(yscrollcommand=yscrollbar.set)
xscrollbar = tk.Scrollbar(frame, orient = tk.HORIZONTAL, command = canvas.xview)
xscrollbar.grid(row = 1, column = 0, sticky = tk.EW)
canvas.configure(xscrollcommand=xscrollbar.set)

#new frame to contain text
frame_text = tk.Frame(canvas)
canvas.create_window((0, 0), window=frame_text, anchor='nw')

#insert dataframe
values = [['Abbreviation',  'UNIPROT Code', 'Full Name',    'Sample Type',  'Sample',   'Patients AGE±SD',  'Condition',    'Recurrence',   'Surgery',  'Patients Comorbidities',   'Patients (n)', 'Controls AGE±SD'],['MYL4', 'P12829',   'Myosin light chain 4', 'tissue',   'Left atrial appendages',   '68.2±2.9', 'permanent',    'n',    'mitral valve surgery', 'MR (11)',  '11.0', '58,8 ± 4,3'], ['AHSG', 'P02765',   'alpha2-HS glycoprotein',   'tissue',   'Right atrial appendages',  '72±10',    'permanent (5), persistent (2), paroxysmal (1)',    'n',    'CABG or valve surgery',    'Hypertension (6), CAD (4)',    '8.0',  '65±12']]

widgets = []
for row in range(len(values)):
    current_row = []
    for column in range(len(values[0])): 
        label = tk.Label(frame_text, text=values[row][column],borderwidth=0, width=len(str(values[row][column])))
        label.grid(row=row, column=column, sticky="nsew", padx=1, pady=1)
        current_row.append(label)
        widgets.append(current_row)

for column in range(len(values[0])):
    frame_text.grid_columnconfigure(column, weight=1)


#Resize the canvas frame
frame.config(width = 1000 + yscrollbar.winfo_width(),height=1000+ 
xscrollbar.winfo_width())

canvas.config(scrollregion=canvas.bbox("all"))

另外,如何将画布大小设置为与窗口大小相同?因为我现在得到的是:picture

EN

回答 1

Stack Overflow用户

发布于 2018-08-10 04:16:44

我总是通过配置滚动条而不是画布来分配命令。尝试替换您的代码行:

代码语言:javascript
复制
canvas.configure...

通过以下方式:

代码语言:javascript
复制
yscrollbar.config(command=canvas.yview)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51772466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档