質問編集履歴

2

少しコードの訂正をしました。

2022/10/22 22:20

投稿

liv_0311
liv_0311

スコア2

test CHANGED
File without changes
test CHANGED
@@ -30,7 +30,7 @@
30
30
 
31
31
  self.frame = Frame(canvas)
32
32
 
33
- canvas.create_window((0, 0), window=self.frame, anchor=NW, width=980, height=850)
33
+ canvas.create_window((0, 0), window=self.frame, anchor=NW)
34
34
 
35
35
  self.widget1()
36
36
  self.label_lst = []

1

ラベルが表示されている下限までスクロール可能にしたい

2022/10/22 21:43

投稿

liv_0311
liv_0311

スコア2

test CHANGED
File without changes
test CHANGED
@@ -12,11 +12,25 @@
12
12
  class Application(Frame):
13
13
  def __init__(self, master):
14
14
  super().__init__(master)
15
- self.grid()
16
15
 
17
16
  master.geometry('1000x850')
18
17
  master.title('DAアルゴリズムによるマッチングアプリ')
19
18
  master.resizable(False, True)
19
+
20
+ canvas = Canvas(master)
21
+
22
+ bar = Scrollbar(self.master, orient=VERTICAL)
23
+ bar.pack(side=RIGHT, fill=Y)
24
+ bar.config(command=canvas.yview)
25
+
26
+ canvas.config(yscrollcommand=bar.set)
27
+ canvas.config(scrollregion=(0, 0, 0, 10000))
28
+ canvas.bind_all('<MouseWheel>', lambda eve: canvas.yview_scroll(int(-eve.delta/120), 'units'))
29
+ canvas.pack(side=LEFT, fill=BOTH, expand=True)
30
+
31
+ self.frame = Frame(canvas)
32
+
33
+ canvas.create_window((0, 0), window=self.frame, anchor=NW, width=980, height=850)
20
34
 
21
35
  self.widget1()
22
36
  self.label_lst = []
@@ -26,29 +40,29 @@
26
40
  self.c_prefs = []
27
41
 
28
42
  def widget1(self):
29
- Label(self.master, text='学生の人数を入力 >>').grid(row=0, column=0, pady=5)
43
+ Label(self.frame, text='学生の人数を入力 >>').grid(row=0, column=0, pady=5)
30
44
  self.f1 = IntVar(value='')
31
- Entry1 = Entry(self.master, textvariable=self.f1, width=5).grid(row=0, column=1, pady=5)
45
+ Entry1 = Entry(self.frame, textvariable=self.f1, width=5).grid(row=0, column=1, pady=5)
32
46
 
33
- Label(self.master, text='研究室の数を入力 >>').grid(row=0, column=2, pady=5)
47
+ Label(self.frame, text='研究室の数を入力 >>').grid(row=0, column=2, pady=5)
34
48
  self.f2 = IntVar(value='')
35
- Entry2 = Entry(self.master, textvariable=self.f2, width=5).grid(row=0, column=3, pady=5)
49
+ Entry2 = Entry(self.frame, textvariable=self.f2, width=5).grid(row=0, column=3, pady=5)
36
50
 
37
- Button1 = Button(self.master, text='OK', command=self.btn1_clicked, width=5).grid(row=0, column=4, pady=5)
51
+ Button1 = Button(self.frame, text='OK', command=self.btn1_clicked, width=5).grid(row=0, column=4, pady=5)
38
52
 
39
53
  def btn1_clicked(self):
40
54
  S = self.f1.get()
41
55
  C = self.f2.get()
42
56
 
43
57
  for i in range(S):
44
- label = Label(self.master, text=['学生',i+1,'の希望順に研究室の番号をスペース区切りで入力 >>']).grid(row=i+1, column=0, pady=5)
58
+ label = Label(self.frame, text=['学生',i+1,'の希望順に研究室の番号をスペース区切りで入力 >>']).grid(row=i+1, column=0, pady=5)
45
59
  self.f_s_pref = StringVar(value='')
46
60
  self.s_prefs.append(self.f_s_pref)
47
- entry = Entry(self.master, textvariable=self.f_s_pref, width=40).grid(row=i+1, column=1, pady=5)
61
+ entry = Entry(self.frame, textvariable=self.f_s_pref, width=40).grid(row=i+1, column=1, pady=5)
48
62
  self.label_lst.append(label)
49
63
  self.entry_lst.append(entry)
50
64
 
51
- button = Button(self.master, text='OK', command=self.btn2_clicked, width=5).grid(row=S, column=2, pady=5)
65
+ button = Button(self.frame, text='OK', command=self.btn2_clicked, width=5).grid(row=S, column=2, pady=5)
52
66
  self.button_lst.append(button)
53
67
 
54
68
  def btn2_clicked(self):
@@ -56,27 +70,27 @@
56
70
  C = self.f2.get()
57
71
 
58
72
  for i in range(C):
59
- label = Label(self.master, text=['研究室',i+1,'の希望順に学生の番号をスペース区切りで入力 >>']).grid(row=S+1+i, column=0, pady=5)
73
+ label = Label(self.frame, text=['研究室',i+1,'の希望順に学生の番号をスペース区切りで入力 >>']).grid(row=S+1+i, column=0, pady=5)
60
74
  self.f_c_pref = StringVar(value='')
61
75
  self.c_prefs.append(self.f_c_pref)
62
- entry = Entry(self.master, textvariable=self.f_c_pref, width=40).grid(row=S+1+i, column=1, pady=5)
76
+ entry = Entry(self.frame, textvariable=self.f_c_pref, width=40).grid(row=S+1+i, column=1, pady=5)
63
77
  self.label_lst.append(label)
64
78
  self.entry_lst.append(entry)
65
79
 
66
- button = Button(self.master, text='OK', command=self.btn3_clicked, width=5).grid(row=S+1+i, column=2, pady=5)
80
+ button = Button(self.frame, text='OK', command=self.btn3_clicked, width=5).grid(row=S+1+i, column=2, pady=5)
67
81
  self.button_lst.append(button)
68
82
 
69
83
  def btn3_clicked(self):
70
84
  S = self.f1.get()
71
85
  C = self.f2.get()
72
86
 
73
- label = Label(self.master, text=['研究室1から順に定員をスペース区切りで入力 >>']).grid(row=S+C+1, column=0, pady=5)
87
+ label = Label(self.frame, text=['研究室1から順に定員をスペース区切りで入力 >>']).grid(row=S+C+1, column=0, pady=5)
74
88
  self.f_capa = StringVar(value='')
75
- entry = Entry(self.master, textvariable=self.f_capa, width=20).grid(row=S+C+1, column=1, pady=5)
89
+ entry = Entry(self.frame, textvariable=self.f_capa, width=20).grid(row=S+C+1, column=1, pady=5)
76
90
  self.label_lst.append(label)
77
91
  self.entry_lst.append(entry)
78
92
 
79
- button = Button(self.master, text='OK', command=self.btn4_clicked, width=5).grid(row=S+C+1, column=2, pady=5)
93
+ button = Button(self.frame, text='OK', command=self.btn4_clicked, width=5).grid(row=S+C+1, column=2, pady=5)
80
94
  self.button_lst.append(button)
81
95
 
82
96
  def btn4_clicked(self):
@@ -147,18 +161,18 @@
147
161
  num_match += 1
148
162
  t += 1
149
163
 
150
- Label(self.master, text='マッチング結果').grid(row=S+C+2, column=0, pady=5)
164
+ Label(self.frame, text='マッチング結果').grid(row=S+C+2, column=0, pady=5)
151
165
  for i in range(S):
152
166
  if s_matched[i]==-1:
153
- label = Label(self.master, text='学生{0}:'.format(i+1)).grid(row=S+C+3+i, column=0, pady=5)
167
+ label = Label(self.frame, text='学生{0}:'.format(i+1)).grid(row=S+C+3+i, column=0, pady=5)
154
168
  self.label_lst.append(label)
155
169
  else:
156
- label = Label(self.master, text='学生{0}: 研究室{1}'.format(i+1, s_matched[i]+1)).grid(row=S+C+3+i, column=0, pady=5)
170
+ label = Label(self.frame, text='学生{0}: 研究室{1}'.format(i+1, s_matched[i]+1)).grid(row=S+C+3+i, column=0, pady=5)
157
171
  self.label_lst.append(label)
158
172
 
159
173
  for j in range(C):
160
174
  if c_filled[j]==0:
161
- label = Label(self.master, text=': 研究室{0}'.format(j+1)).grid(row=S+C+3+i, column=1, pady=5)
175
+ label = Label(self.frame, text=': 研究室{0}'.format(j+1)).grid(row=S+C+3+i, column=1, pady=5)
162
176
  self.label_lst.apppend(label)
163
177
 
164
178
  def main():